在 Node module.exports = {} 中导出一个类

Ant*_*ton 0 javascript node.js ecmascript-6

我想在模块中导出一个带有静态方法的类以及其他函数。我正在尝试做

module.exports = {
  fun: function(){},
  class: MyClass
}
class MyClass {
  static get prop() {
    return 'property';
  }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。有没有办法将类导出为 module.exports 对象的一部分?

Dan*_*nce 5

类定义不会被提升,这意味着当您声明这些导出时,您的类将不在范围内。将它们向下移动到定义下方。

class MyClass {
  static get prop() {
    return 'property';
  }
}
module.exports = {
  fun: function(){},
  class: myClass
}
Run Code Online (Sandbox Code Playgroud)

您还需要修复导出变量的大小写。

module.exports = {
  fun: function(){},
  class: MyClass
}
Run Code Online (Sandbox Code Playgroud)

根据您的 Javascript 环境,如果您尝试将保留字class用作文字对象属性,则可能会出现编译时错误。您可以将其包装在字符串中以避免这种情况。

module.exports = {
  fun: function(){},
  "class": MyClass
}
Run Code Online (Sandbox Code Playgroud)