生成新的 Nestjs 模块会导致错误:无法执行命令

Ami*_*eza 2 node.js npm typescript nestjs

我使用带有 M1 芯片的 MacOS monterey 作为操作系统。使用以下命令安装 NestJS cli:sudo npm install -g @nestjs/cli

当使用nest new message一切正常创建新的嵌套项目时,但是当我尝试使用此命令创建新模块时,nest generate module messages我遇到错误。

为什么会发生这种情况?我尝试使用安装原理图npm i -g @nestjs/schematics,我不知道是否应该安装它,但这无论如何都没有帮助。

我面临的错误是:

/Users/homayoun/training/messages/node_modules/@angular-devkit/schematics-cli/bin/schematics.js:338
            throw new Error(`Unknown argument ${key}. Did you mean ${(0, yargs_parser_1.decamelize)(key)}?`);
                  ^

Error: Unknown argument skipImport. Did you mean skip-import?
    at parseArgs (/Users/homayoun/training/messages/node_modules/@angular-devkit/schematics-cli/bin/schematics.js:338:19)
    at main (/Users/homayoun/training/messages/node_modules/@angular-devkit/schematics-cli/bin/schematics.js:122:49)
    at Object.<anonymous> (/Users/homayoun/training/messages/node_modules/@angular-devkit/schematics-cli/bin/schematics.js:367:5)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
    at node:internal/main/run_main_module:17:47

Failed to execute command: node @nestjs/schematics:module --name=messages --no-dry-run --no-skipImport --language="ts" --sourceRoot="src" --spec.
Run Code Online (Sandbox Code Playgroud)

值得注意的是,当我在 ubuntu 20 或 22 上执行相同的操作时,我不会遇到任何问题

Bha*_*tha 7

快速解决方案:

  1. 将其添加到您的 Nest-cli.json
"root": "src"
Run Code Online (Sandbox Code Playgroud)
  1. 更改为项目文件夹的 src
cd src
Run Code Online (Sandbox Code Playgroud)
  1. 跑步
nest generate module messages
Run Code Online (Sandbox Code Playgroud)

如果上述方法不起作用,还可以尝试将 package.json 中的包版本更改为

"@nestjs/cli": "8.2.6",
"@nestjs/schematics": "8.0.11",
Run Code Online (Sandbox Code Playgroud)

删除当前项目中的节点模块,重新安装 Nest cli

npm uninstall -g @nestjs/cli
npm i -g @nestjs/cli@8.2.6 
Run Code Online (Sandbox Code Playgroud)

  • @nestjs/cli 版本 8.2.7 不能很好地工作。它确实有帮助。但是您必须从版本中删除“^”才能使您的解决方案起作用。 (3认同)

Mic*_*evi 6

这是最新版本@nestjs/cli(v8.2.7) 上的错误。将其降级即可8.2.6工作(我测试过)。此处报道: https: //github.com/nestjs/nest-cli/issues/1693

另外,我不建议使用全局版本的 CLI。相反,请使用npx nestyarn nest