2016-05-23 51 views
8

我试图从CommonJS的模块中的Node.js导出ES6类6.2.0Node.js 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,它是最新的节点6.2.0中实现的纯JS,根据Kangax的说法,它实现了93%的ES6。

//编辑:这不是出口vs module.exports的问题。单独使用导出时,我得到一些与__proto__集合的对象。

+1

尝试记录需要模块后得到的内容。 _If它不是构造函数,它是什么?_ – sdgluck

+1

*“这不是出口vs module.exports的问题”*是的! 'exports = MyClass;'不会导出任何内容。这是一个noop。 'module.exports = ...;'是从模块中导出单个值的方法。重复解释了为什么'exports = ...;'不起作用。 –

+0

您应该将@Bergi答案标记为正确(通过点击他答案左侧的灰色'ceck'按钮) –

回答

22

您将需要分配给module.exports,而不是当地的exports变量。

+2

@ kubal5003:从那篇文章中:“*'require'返回一个对象,它引用了'module .exports'给定文件*“。我的回答错误?你尝试过使用'module.exports = MyClass'吗? – Bergi

+2

@ kubal5003:这个答案是正确的。如果你不相信那么你需要花更多的时间来学习Node/CommonJS模块。 –

+0

这对我有用。这应该被接受为解决方案。 –