【问题标题】:Node.js ES6 how to export class from module? [duplicate]Node.js ES6 如何从模块中导出类? [复制]
【发布时间】:2016-09-20 13:51:29
【问题描述】:

我正在尝试从 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 vs module.exports的问题。单独使用导出时,我得到了一些带有__proto__ 设置的对象。

【问题讨论】:

  • 在需要模块后尝试记录你得到的东西。 如果不是构造函数,那是什么?
  • “这不是 export 与 module.exports 的问题” 是的! exports = MyClass; 不导出任何内容。这是一个noop。 module.exports = ...; 是从模块中导出单个值的方法。副本解释了为什么exports = ...; 不起作用。
  • 您应该将@Bergi 的答案标记为正确(点击答案左侧的灰色“检查”按钮)

标签: javascript node.js ecmascript-6 commonjs


【解决方案1】:

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

【讨论】:

  • @kubal5003:来自那篇文章:“require 返回一个对象,该对象引用给定文件的 module.exports 的值”。我的答案怎么错了?您是否尝试过使用module.exports = MyClass
  • @kubal5003:这个答案是正确的。如果您不相信,那么您需要花更多时间学习 Node/CommonJS 模块。
  • 这对我有用。这应该被接受为解决方案。
猜你喜欢
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2016-11-15
  • 2017-12-30
  • 2019-08-08
相关资源
最近更新 更多