isJoi = правда; SyntaxError: Неожиданный токен = - PullRequest
3 голосов
/ 16 января 2020

Я работаю над бэкэндом Nest Js на нескольких машинах. Одна машина не может работать с пакетом @ hapi / joi . При запуске приложения Nest Js в режиме разработки я получаю эту ошибку

PS C: \ Users \ mhermsen \ Desktop \ joi-test> npm run start: dev

> joi-test@0.0.1 start:dev C:\Users\mhermsen\Desktop\joi-test
> nest start --watch

8:32:49 AM - Starting compilation in watch mode...


8:32:51 AM - Found 0 errors. Watching for file changes.
C:\Users\mhermsen\Desktop\joi-test\node_modules\@hapi\joi\lib\errors.js:246
    isJoi = true;
          ^

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> (C:\Users\mhermsen\Desktop\joi-test\node_modules\@hapi\joi\lib\index.js:9:16)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)

Я пытался воспроизвести проблему. Сначала я создал новое приложение Nest через nest new joi-test. Затем я установил joi через

$ npm install --save @hapi/joi
$ npm install --save-dev @types/hapi__joi

Я удалил большую часть кода. Каталог sr c содержит только файл main.ts с

import * as Joi from "@hapi/joi";

Joi.object({
  num: Joi.number()
}).validate({
  port: "abc"
});

Больше нет кода, связанного с Nest, поэтому я думаю, что это не имеет никакого отношения с гнездом При удалении проверки и только импорте пакета код работает нормально.

import * as Joi from "@hapi/joi";

console.log("This is fine now");

Другие машины работают нормально, это появляется только на этом компьютере. Любые идеи, как это исправить?


Обновление: Я проверил его на другой машине компании, и эта машина тоже выходит из строя. Так что мои частные Linux машины, кажется, работают, и моя компания Windows 10 машин, кажется, выдает эту ошибку.

Ответы [ 2 ]

3 голосов
/ 16 января 2020

У меня была такая же проблема. Я думаю, что вы используете joi v17 с узлом

Joi 17 работает с узлом> = 12. Таким образом, вы должны использовать узел 12 или перейти на Joi-v.17

1 голос
/ 19 января 2020

Если вы используете nvm, в своем терминале обновите версию своего узла следующим образом

$ nvm install 12
$ nvm use 12

и перезапустите приложение вашего узла.

Это хороший учебник по установке nvm https://dev.to/jlouiss/how-to-use-nvm-and-why-4e05

...