问题
// 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…