Node中的ES6类和函数用法

时间:2019-03-02 19:36:33

标签: javascript node.js ecmascript-6

我一直在学习一些React,并且我一直在使用ES6类编写基于类的组件。我正在开发一个Node小型项目,但该语法均无效。

esm

此语法有什么问题?它不在Node中运行吗?我必须安装alp_customer.first, alp_customer.last, alp_customer.email才能使导入/导出语法正确运行,但是仍然无法编译。

2 个答案:

答案 0 :(得分:2)

Class Fields仍处于提案阶段(已进入第3阶段,因此它们将很快成为该语言的一部分)。这意味着某些运行时可能已经支持它们,但是还不需要。要在今天可靠地使用投标,您必须将其与BabelJS一起移植下来。

这会将您的代码转换为以下ES6:

 class Handler {
  constructor() {
    this.handleReq = () => {
      this.ctx = ctx;
    };

    this.testFunc = async () => {
    };
   }
 }

因此,这些方法实际上仅存在于构造后的实例上,而不存在于Handler.prototype上。

答案 1 :(得分:0)

正如其他人指出的那样,如果不进行编译,则类字段还不是ES6语法的一部分。如果要避免构建步骤,则等效的节点语法为:

// import someImport from './some-import' is invalid, instead use:
const someImport = require('./some-import');

class Handler {
  constructor() {
    this.handleReq = this.handleReq.bind(this);
    this.testFunc = this.testFunc.bind(this);
  }

  handleReq() {
    this.ctx = ctx; // Where is ctx coming from?
  }

  async testFunc() {

  }
}

// export default Handler.prototype.handleReq is invalid, instead use:
module.exports = Handler.prototype.handleReq;