当前位置:  开发笔记 > 编程语言 > 正文

Module.exports和es6导入

如何解决《Module.exports和es6导入》经验,为你挑选了2个好方法。

与巴贝尔发生反应.我对import和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作为模块捆绑器.



1> Matt Molnar..:

export { Tiger }相当于module.exports.Tiger = Tiger.相反,module.exports = Tiger相当于export default Tiger.因此,当您使用module.exports = Tiger然后尝试import { Tiger } from './animals'有效地要求时Tiger.Tiger.



2> jmarceli..:

如果您想导入:

module.exports = Tiger

你可以使用以下结构:

import * as Tiger from './animals'

然后它会工作.

另一种选择是改变@Matt Molnar所描述的导出,但只有你是导入代码的作者才有可能.


来自'。/ animals'`的`import * as Tiger为我工作!谢谢
推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有