isJoi = true; SyntaxError: Unexpected token =
isJoi = true; SyntaxError: Unexpected token =
我正在多台机器上处理 NestJs 后端。一台机器无法处理 @hapi/joi 包。 运行在开发模式下使用 NestJs 应用程序时出现此错误
PS C:\Users\mhermsen\Desktop\joi-test> npm 运行 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 new joi-test
创建了一个新的 Nest 应用程序。接下来我通过
安装了 joi
$ npm install --save @hapi/joi
$ npm install --save-dev @types/hapi__joi
我删除了大部分代码。 src 目录仅包含一个 main.ts 文件
import * as Joi from "@hapi/joi";
Joi.object({
num: Joi.number()
}).validate({
port: "abc"
});
Nest 相关的代码已经没有了,所以我认为这与 Nest 无关。删除验证并仅导入包时,代码工作正常。
import * as Joi from "@hapi/joi";
console.log("This is fine now");
其他机器正常,只出现在本机。有什么解决办法吗?
更新:
我在另一台公司的机器上测试过,这台机器也失败了。所以我的私人 Linux 机器似乎可以工作,而我公司的 Windows 10 台机器似乎会抛出这个错误。
我遇到了同样的问题。
我认为您将 joi v17 与 node < v12
一起使用
Joi 17 适用于节点 >= 12。因此您必须使用节点 12 或降级到 Joi-v.17
如果您使用的是 nvm,请在您的终端中像这样升级您的节点版本
$ nvm install 12
$ nvm use 12
并重新启动您的节点应用程序。
这是一个关于如何安装 nvm 的很好的教程
https://dev.to/jlouiss/how-to-use-nvm-and-why-4e05
我正在多台机器上处理 NestJs 后端。一台机器无法处理 @hapi/joi 包。 运行在开发模式下使用 NestJs 应用程序时出现此错误
PS C:\Users\mhermsen\Desktop\joi-test> npm 运行 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 new joi-test
创建了一个新的 Nest 应用程序。接下来我通过
$ npm install --save @hapi/joi
$ npm install --save-dev @types/hapi__joi
我删除了大部分代码。 src 目录仅包含一个 main.ts 文件
import * as Joi from "@hapi/joi";
Joi.object({
num: Joi.number()
}).validate({
port: "abc"
});
Nest 相关的代码已经没有了,所以我认为这与 Nest 无关。删除验证并仅导入包时,代码工作正常。
import * as Joi from "@hapi/joi";
console.log("This is fine now");
其他机器正常,只出现在本机。有什么解决办法吗?
更新: 我在另一台公司的机器上测试过,这台机器也失败了。所以我的私人 Linux 机器似乎可以工作,而我公司的 Windows 10 台机器似乎会抛出这个错误。
我遇到了同样的问题。 我认为您将 joi v17 与 node < v12
一起使用Joi 17 适用于节点 >= 12。因此您必须使用节点 12 或降级到 Joi-v.17
如果您使用的是 nvm,请在您的终端中像这样升级您的节点版本
$ nvm install 12
$ nvm use 12
并重新启动您的节点应用程序。
这是一个关于如何安装 nvm 的很好的教程 https://dev.to/jlouiss/how-to-use-nvm-and-why-4e05