javascript – 导入语句和Babel
作者:互联网
我正在使用Facebook的fbjs中的keyMirror定义两个常量.
// file1.js
import keyMirror from 'fbjs/lib/keyMirror'
export default keyMirror({
CONST1: null,
CONST2: null,
})
然后在file2.js中导入它们:
// file2.js
import { CONST1, CONST2 } from './file1'
console.log(CONST1) // undefined
他们的价值观无法解决.如果我像这样更改file2.js:
// file2.js
import constants from './file1'
console.log(constants.CONST1) // CONST1
它工作正常.它出什么问题了?我正在使用Babel 6和babel-preset-es2015来运行脚本.
解决方法:
导入不匹配,如果导出默认导出,则必须导入默认导出.如果要使用命名导出导入,则需要使用命名导出进行导出.
对于
import { CONST1, CONST2 } from './file1'
工作,你需要
export let {CONST1, CONST2} = keyMirror({
CONST1: null,
CONST2: null,
});
在ES6模块语法中导入后的{CONST1,CONST2}与解构无关,因此您不应将其视为从默认导出中拉出属性.相反,将其视为要从模块导入的名称列表.
你的解决方案可能适用于Babel 5,但它仍然无效,即便如此.你可以看到this answer更多的解释.
每个ES6模块都会导出一组导出,默认情况下,默认情况下是特殊的.
import constants from './file1';
是的缩写
import {default as constants} from './file1';
和
export default keyMirror({
CONST1: null,
CONST2: null,
})
基本上是短暂的
var temp = keyMirror({
CONST1: null,
CONST2: null,
});
export {temp as default};
标签:fbjs,javascript,ecmascript-6,reactjs,babeljs 来源: https://codeday.me/bug/20190722/1503658.html