ES6 export 和 import语句中的解构赋值 - 未解决

1,387 阅读1分钟

问题

// config.js
export default {
  host: 'localhost',
  port: 80
}

// app.js
import { host } from './config'
console.log(host) // => undefined

这句代码,语法上是没什么问题的,但是就是拿不到值

原因

babel 对 export default 的处理

我用 Google 搜 'es6 import 解构失败',找到了下面的这篇文章:ES6的模块导入与变量解构的注意事项。原来经过 webpack 和 babel 的转换

export default {
  host: 'localhost',
  port: 80
}

变成了

module.exports.default = {
  host: 'localhost',
  port: 80
}

所以取不到 host 的值是正常的。那为什么 antd-init 建立的项目有可以获取到呢?

antd-init 使用了 babel-plugin-add-module-exports,所以 export default 也没问题。

解决-未解决

临时方案

// b.js
export let foo =  "foo"
export let bar = "bar"

// a.js
import { foo, bar } from "./b"

参考

Github上的讨论:github.com/babel/babel…

参考:www.jianshu.com/p/ba6f582d5…