与通天塔反应。我对导入和 module.exports 感到困惑。我假设在将 ES6 代码转换为 ES5 时,babel 会将导入和导出分别转换为 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");
我使用带有预设 es2015 的 babel 来转编译它。这给了我以下错误
未捕获的 TypeError: (0 , _animals.Tiger) 不是函数
但是,如果我删除并将其module.exports = Tiger;
替换为export { Tiger };
它可以正常工作。
我在这里想念什么?
编辑: 我使用 browserify 作为模块捆绑器。