无法解决依赖树错误创建新的角度项目

所以今天我想用 ng new <projectname>命令创建一个新的 Angular 项目,我得到了这个错误:

npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: project-name@0.0.0
npm ERR! Found: jasmine-core@3.6.0
npm ERR! node_modules/jasmine-core
npm ERR!   dev jasmine-core@"~3.6.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer jasmine-core@">=3.7.1" from karma-jasmine-html-reporter@1.6.0
npm ERR! node_modules/karma-jasmine-html-reporter
npm ERR!   dev karma-jasmine-html-reporter@"^1.5.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.

我真的尝试了所有的方法,我更新了 npm,再次安装了 Angular cli,下载并再次安装了 nodenpm audit,还有很多其他的东西,但是什么都没有发生。

也正如您可以看到的错误告诉我使用与 --force的命令,我尝试,但什么也没有发生,并与 --legacy-peer-deps,我得到的错误作为未知的选项。

最困扰我的是,昨晚一切都完全正常,我什么都没有改变,但今天突然出现了这个错误。

94829 次浏览

他们几个小时前释放了 Karma Jasmine html 记者,这可能就是破解代码的原因。 更新很可能是原因。

您应该更改 package.json并获得旧版本的 Karma Jasmine 旧版本

打开用 ng new 创建的文件夹并打开 package.json文件。在 devDependencies中,将“ Jasmine-core”3.6.0的版本从 1.7.0改为 3.8.0,将“ karma-jasmine-html-porter”的版本从 1.7.0改为 1.6.0并保存它。然后返回到 Terminal,转到您的项目并运行 npm install。现在它工作,你可以运行 ng serve

编辑2021

"jasmine-core": "~3.8.0",
"karma-jasmine-html-reporter": "^1.7.0"

好像是最新的 NPM 7.12.0节点16.1.0(当前版本)的问题

在我的情况下,我遵循以下步骤-

  1. 卸载节点
  2. 重新安装最新节点(LTS: 14.16.1)
    • 它将安装最新的 NPM : 6.14.12
  3. 运行 ng new my-app

我也遇到了同样的问题,我通过重新安装 nodeJs 14.16.1解决了这个问题 但是我必须使用这个命令手动更改 npm 的版本

npm install -g npm@6.14.12

当然,之后我通过创建一个项目来测试修改

ng new <MyProjet>

我通过在我的项目目录中使用这个命令解决了这个问题:

  1. Npm install —— save-dev@angle-devkit/build-angle —— force
  2. Npm 审核修复程序——强制

然后我用“ ng service”运行我的项目

我的是一个基于@david-Öztürk 的11.2.12版本的临时解决方案,以及 这个角-克利-吉特布问题的讨论它的合并修复的解决方案。

通过执行@david-Öztürk 回答中列出的步骤,我仍然得到相同的错误。而且修正比提出的解决方案更加保守。我希望这能帮到其他人:

运行 Angular 项目创建,无需自动 npm 包安装:

ng new --skip-install <project-name>

输入项目目录:

cd <project-name>

编辑 package.json并改变这个..。

"karma-jasmine-html-reporter": "^1.5.0",

变成这样:

"karma-jasmine-html-reporter": "~1.5.0",

手动安装 npm 包:

npm install

注意: 这里使用的是1.5.0版本,因为它是出现在错误消息中的版本,我们试图在这里更保守一些。请根据您的具体需要修改版本。对于较新的项目,版本1.7.0可能更适合,但它可以随着时间的推移而改变。阅读您的具体错误消息,以便选择更好地解决您的具体情况。

执行后错误详细信息 ng new my-app

Npm ERR! 无法解决依赖性:

同行 jasmine-core@“ > = 3.7.1”来自 karma-jasmine-html-porter@1.6.0

修复细节

  1. 7.10.07.13.0的更新 npm
  2. 只将 "jasmine-core"3.6.0改为 3.7.1,即 package.json 中的 "jasmine-core": "~3.7.1",
  3. npm install

这之后发现没有问题,我能够做 ng buildng serve

其他我留下的设置如下: "@types/jasmine": "~3.6.0", "jasmine-spec-reporter": "~5.0.0",

安装节点,如果您没有它或更新到最新版本: Https://nodejs.org/en/download/package-manager/

更新你的 npm: 安装 npm@update-g

可选项: 更新节点

这将更新到它的最新版本: Npm install-g@angle/cli 创建一个新的角度项目: 新项目名称 更改 projectName 目录: Cd projectName 为项目服务 没有

如果在尝试了上面的一些/所有选项之后仍然遇到这种情况,只需将 npm 版本从7降级到6: npm install-g npm@6

如果您仍然面临这个问题,那么请确保您的 package.json拥有与其他支持库版本匹配的所有版本。jasmine-core必须大于 3.8karma-jasmine-html-report必须大于 1.7 +

这是我的 devDependecies 在 package.json 里的样子

"devDependencies": {
"@angular-devkit/build-angular": "~12.0.0",
"@angular/cli": "~12.0.0",
"@angular/compiler-cli": "~12.0.0",
"@types/jasmine": "~3.6.0",
"@types/node": "^12.11.1",
"jasmine-core": "~3.8.0",
"karma": "~6.3.0",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage": "~2.0.3",
"karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "^1.7.0",
"typescript": "~4.2.3"
}

编辑项目文件夹中的 package.json

“ jasmine-core”: “ ~ 3.7.0”到“ jasmine-core”: “ ~ 3.8.0”, “因缘-茉莉-html-记者”: “ ^ 1.5.0”到“因缘-茉莉-html-记者”: “ ^ 1.6.0”

在项目文件夹中运行 npm install之后。

无助于更新 npm 和 node.js。奇怪的错误,奇怪的错误信息。确实有助于更新 package.json-change version of something‘ jasmine’-“ jasmine-core”: “ ~ 3.8.0”。我不知道这是干什么用的,但它会制造麻烦。

package.json中执行以下操作

"jasmine-core": "~3.8.0",

"karma-jasmine-html-reporter": "^1.7.0",

那就做 npm install

你可以在全球范围内更新角斜面: npm update @angular/cli -g

对我有效的方法是手动更新 package.json,使其看起来像这样

"jasmine-core": "~3.8.0",
"karma-jasmine-html-reporter": "^1.7.0"

然后我努力了

npm install

但也没用,所以我试了

npm install --legacy-peer-deps

然后一切又恢复正常了 npm start一如既往

在将 npm更新为 latest(目前为 8.5.3)之后,我今天遇到了这个问题。然后我简单地从命令行运行 ng new <my-new-project>,添加 Angular Route,我回答 y,并选择 SCSSng做了他的事情,我得到了错误,只是不同的版本:

角度12

  • 没有 jasmine-core-在错误状态 "jasmine-code@3.7.1"和 I 需要 "jasmine-code@>=3.8")
  • 没有 karma-jasmine-html-reporter(错误 状态 "@^1.5.0"和我需要 "@1.7.0")
  • 检查了 node_modulespackages.json-没有提及,也没有踪迹。

在阅读了这个问题和答案之后。我决定更新我的 Angularlatest和运行 ng -g i angular-cli@latest,我收到了一个错误的文件 ng.cmd已经存在于文件夹 {Windows-users-username-folder}\AppData\Roaming\npm\ng.cmd-我删除了文件。第二次运行 Angular的更新时,我在文件 ng.上收到了相同的错误(删除了它) ,第三次在 ng.ps1上收到了错误(删除了三个)。那么 Angular的更新是成功的。然后我运行 ng new <my-new-project>,它也是成功的。

顺便说一下,在我的新项目 packages.json中,我看到:

"devDependencies": {
"@angular/compiler-cli": "^2.3.1",
"@types/jasmine": "2.5.38",
"@types/node": "^6.0.42",
"angular-cli": "1.0.0-beta.28.3",
"codelyzer": "~2.0.0-beta.1",
"jasmine-core": "2.5.2",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "~4.0.13","ts-node": "1.2.1", "tslint": "^4.3.0",
"typescript": "~2.0.3"
}

与错误中的描述完全不同。