我正在多台机器上开发 NestJs 后端。一台机器无法处理@hapi/joi包裹。在开发模式下运行 NestJs 应用程序时出现此错误
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 new joi-test
创建了一个新的 Nest 应用程序。 .接下来我通过安装 joi$ npm install --save @hapi/joi
$ npm install --save-dev @types/hapi__joi
我删除了大部分代码。 源 目录只包含一个 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");
其他机器工作正常,这只出现在这台机器上。任何想法如何解决它?
更新:
我在另一台公司机器上测试过,这台机器也出故障了。所以我的私有(private) Linux 机器似乎可以工作,而我公司的 Windows 10 机器似乎抛出了这个错误。
最佳答案
我有同样的问题。
我认为您将 joi v17 与 node < v12 一起使用
Joi 17 适用于节点 >= 12。因此您必须使用节点 12 或降级到 Joi-v.17
关于typescript - isJoi = 真;语法错误 : Unexpected token =,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765065/