typescript - isJoi = 真;语法错误 : Unexpected token =

标签 typescript npm nestjs joi

我正在多台机器上开发 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/

相关文章:

express - 如何在 NestJS Interceptor 中获取处理程序路由(对于 Express 和 Fastify)

typescript - 我的类验证器如何验证联合字符串 |数字?

typescript - 如何在nest.js中使用异常过滤器

angular - window.scroll 不适用于 Angular 11 和 Material

typescript - 如何通过参数值指定命名空间中的泛型类型

带参数的 typescript 枚举

Typescript通过带有索引和值的字符串循环

javascript - 注销 npm 的 GitHub Packages

javascript - nodejs 应用程序如何在特定时间可靠地执行任务?

docker - HyperLedger Fabric v1.4.4:在mychannel上实例化智能合约,但出现错误