Node.js ES6如何从模块中导出类?

20

我正在尝试从Node.js 6.2.0中的CommonJS模块导出一个ES6类。

class MyClass{
    //class contents here
}

exports = MyClass;

然后在另一个模块中导入它:

var MyClass = require('/path/to/module.js')
var instance = new MyClass();

然而,我遇到了以下异常:

TypeError: MyClass is not a constructor

我该如何正确地做到这一点?

请注意,我没有使用Babel/Tranceur,而是使用最新的Node 6.2.0中实现的纯JS,根据Kangax的说法,它实现了93%的ES6。

//编辑:这不是exports与module.exports的问题。仅使用exports时,我得到一些设置了__proto__的对象。


1
尝试在需要该模块后记录所得内容。如果它不是构造函数,那它是什么? - sdgluck
1
"这不是exports与module.exports的问题",是的! exports = MyClass; 不会导出任何东西。 这是无操作的。 module.exports = ...; 是从模块中导出单个值的方式。重复说明了为什么 exports = ...; 不起作用。 - Felix Kling
你应该将@Bergi的答案标记为正确(通过点击他答案左侧的灰色“勾”按钮) - Kamil Kiełczewski
1个回答

37

您需要给 module.exports 赋值,而不是本地的 exports 变量。


2
@kubal5003:从那篇文章中可以看到:“*require返回一个对象,该对象引用给定文件的module.exports的值*”。我的回答哪里错了?你试过使用module.exports = MyClass吗? - Bergi
2
@kubal5003: 这个回答是正确的。如果你不相信,那你需要花更多的时间学习关于Node/CommonJS模块的知识。 - Felix Kling
这对我有用。这应该被接受为解决方案。 - Sarath Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接