使用babel处理React。我对imports和module.exports存在困惑。我假设在将ES6代码转换为ES5时,Babel会将imports和exports分别转换为require和module.exports。
如果我从一个模块导出一个函数并在另一个模块中导入该函数,则代码可以正常执行。但是,如果我使用module.exports导出函数并使用"import"导入它,则会在运行时抛出错误,指出它不是函数。
我编写了一个示例。
// Tiger.js
function Tiger() {
function roar(terrian){
console.log('Hey i am in ' + terrian + ' and i am roaing');
};
return roar;
}
module.exports = Tiger;
// animal.js
import { Tiger } from './animals';
var animal = Tiger();
animal("jungle");
我使用了babel和预设es2015来进行转译。这给了我以下错误:
Uncaught TypeError: (0 , _animals.Tiger) is not a function
但是,如果我删除 module.exports = Tiger;
并用 export { Tiger };
替换它,它就可以正常工作。
我错过了什么??
编辑:我正在使用browserify作为模块打包程序。
Tiger.js
转译后的源代码将立即告诉你为什么它不起作用。长话短说:坚持使用一个模块系统或使用像 webpack 这样的模块打包工具来处理不一致性。 - GJK