【问题标题】:SyntaxError: Unexpected token = on moduleSyntaxError: Unexpected token = on module
【发布时间】:2020-08-02 17:11:28
【问题描述】:

我一直在 Nodejs 的类中使用胖箭头函数,但出现以下错误,在我的 PC 上运行良好。

static post = async (req, res, next) => {
              ^

SyntaxError: Unexpected token =
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/home/selacomn/repositories/ecommerce-backend/src/mobile/routes/order.js:2:25)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)

我在部署中使用的环境是:

node --version >> v10.22.0
npm --version >> 6.14.6

这段代码在我的系统上运行良好,我的系统环境是:

node --version >> v12.18.3
npm --version >> 6.14.6

我认为版本控制不是问题,因为我以前遇到过这个问题,但我忘记了我是怎么做到的。而且,我无法对这种开发进行试验,因为问题出在服务器内部。那么,你们有什么可以帮忙的吗?

出现问题的代码如下:

class OrderController {
  static post = async (req, res, next) => {
    Order.create()
  };
  static getOne = async (req, res, next) => {
    Order.getOne(id) 
  };
  static getAll = async (req, res, next) => {
    Order.getAll()
  };
}

【问题讨论】:

标签: node.js express ecmascript-6


【解决方案1】:

来自MDN

static关键字定义了一个类的静态方法。

您似乎试图将静态属性设置为箭头函数,这将有效地创建静态方法,但这是无效的语法。正确的语法是:

class OrderController {
  static async post(req, res, next) {
    Order.create();
  }
  static async getOne(req, res, next) {
    Order.getOne(id);
  }
  static async getAll(req, res, next) {
    Order.getAll();
  }
}

如果您真的需要箭头函数,请使用赋值,但通常没有理由这样做:

class OrderController {
}
OrderController.post = async (req, res, next) => {
  Order.create();
};
OrderController.getOne = async (req, res, next) => {
  Order.getOne(id);
};
OrderController.getAll = async (req, res, next) => {
  Order.getAll();
};

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2015-12-17
    • 2017-06-07
    • 2017-05-14
    • 2021-07-19
    相关资源
    最近更新 更多