SyntaxError: неожиданный токен = в модуле - PullRequest
0 голосов
/ 02 августа 2020

Я использовал функцию жирной стрелки внутри классов в Nodejs, и я получал приведенную ниже ошибку, которая отлично работает на моем P C.

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()
  };
}

1 Ответ

1 голос
/ 02 августа 2020

From MDN :

Ключевое слово stati c определяет метод stati c для класса.

Кажется, пытаться установить свойство stati c для функции стрелки, которая фактически создала бы метод stati c, но это недопустимый синтаксис. Правильный синтаксис:

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();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...