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

Posted

技术标签:

【中文标题】无法解决创建新 Angular 项目的依赖树错误【英文标题】:unable to resolve dependency tree error for creating new angular project 【发布时间】:2021-07-29 16:47:42 【问题描述】:

所以今天我想使用命令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,我得到了未知选项的错误。

最困扰我的是昨晚一切正常,我什么也没做,但今天突然出现这个错误。

【问题讨论】:

首先更新 angular-cli 然后 ng new appName 这对我有用 【参考方案1】:

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

编辑 2021

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

【讨论】:

不是更实际的。需要 jasmine-core 版本 3.8.0 版本可以根据安装的 Angular/CLI 或 NPM 版本而有所不同。更改 NPM 版本后,我不得不再次更改版本。 我遇到这个问题已经有一段时间了,但我已经在 jasmine-core 3.7.1 了。相反,我必须使用npm i --legacy-peer-deps 才能到达任何地方。今天我发现 jasmine-core 3.8.0 可用,这终于解决了我的问题。 解决了 "jasmine-core": "~3.8.0" 和 "karma-jasmine-html-reporter": "^1.7.0", 知道这是否是我可以更改/修复以防止这种情况发生的事情,还是 cli 错误?当你不得不谷歌解决方法来创建一个 Angular hello world 项目时,这非常糟糕。【参考方案2】:

我是基于@david-Öztürk 答案和this angular-cli github issue discussions 和its merged fix 的angular-cli v11.2.12 的临时解决方案。

通过执行@david-Öztürk 回答中列出的步骤,我仍然遇到同样的错误。而且该修复比建议的解决方案更保守。我希望它可以帮助别人:

在不自动安装 npm 包的情况下运行 Angular 项目创建:

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 对我有用。我已更新到 Angular 版本 12.2.4。我不得不先扔掉我的 package-lock.json。一个愚蠢的解决方法,但你要做什么。谢谢伊奥吉! @IanPostonFramer 我相信如果您在手动更改package.json 文件后运行npm install,它会为您更新package-lock.json。无论如何,--skip-install 标志的第一步不应该生成一个 package-lock.json 来避免这个问题。【参考方案3】:

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

npm install -g npm@6.14.12

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

ng new <MyProjet>

【讨论】:

【参考方案4】:

如果您仍然遇到此问题,请尝试确保您的 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"
  

【讨论】:

【参考方案5】:

最新的 NPM 7.12.0 和最新的 Node 16.1.0(当前版本)

似乎存在问题

就我而言,我遵循以下步骤 -

    卸载节点 重新安装最新节点 (LTS: 14.16.1) 这将安装最新的NPM : 6.14.12 运行ng new my-app

【讨论】:

谢谢!奇迹般有效。我使用 nvm,所以我的步骤是:“nvm install --lts”然后重新安装 angular“npm install -g @angular/cli”,它工作得很好 这个解决方案是完美的。请记住在运行卸载步骤后从%userprofile%/AppData/Roaming 中删除 npm 和节点文件夹。这样你就可以确定你已经完全删除了 node 和 npm。【参考方案6】:

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

更新你的 npm: npm install npm@latest -g

可选: npm i 更新节点

这会将 Angular 更新到其最新版本: npm install -g @angular/cli 创建一个新的角度项目: 新项目名称 更改目录项目名称: cd 项目名称 为项目服务 ng s

【讨论】:

完美解决我的问题。谢谢!【参考方案7】:

他们在几个小时前发布了Karma Jasminehtml 记者。这可能是破坏代码的原因。 The update is most likely the cause.

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

【讨论】:

【参考方案8】:

您可以全局更新 Angular cli:npm update @angular/cli -g

【讨论】:

这是最简单的方法。【参考方案9】:

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

    npm install --save-dev @angular-devkit/build-angular --force npm 审计修复 --force

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

【讨论】:

【参考方案10】:

错误详情后做 ng new my-app

npm 错误!无法解析依赖:

npm 错误! peer jasmine-core@">=3.7.1" 来自 karma-jasmine-html-reporter@1.6.0

修复细节

    sudo npm install -g npm@7.13.0 => 将 npm 从 7.10.0 更新为 7.13.0 仅在 package.json 中将 "jasmine-core"3.6.0 更改为 3.7.1"jasmine-core": "~3.7.1", npm install

在此之后没有发现任何问题,我能够做到 ng buildng serve

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

【讨论】:

【参考方案11】:

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

"jasmine-core": "~3.7.0" 到 "jasmine-core": "~3.8.0", "karma-jasmine-html-reporter": "^1.5.0" 到 "karma-jasmine-html-reporter": "^1.6.0"

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

【讨论】:

【参考方案12】:

无助于更新 npm 或 node.js。奇怪的错误,奇怪的错误信息。是否有助于更新 package.json - 更改“jasmine”的版本 - “jasmine-core”:“~3.8.0”。我不知道它有什么用,但它会产生问题。

【讨论】:

【参考方案13】:

只需在package.json 中执行以下操作

"jasmine-core": "~3.8.0",

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

然后做npm install

【讨论】:

【参考方案14】:

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

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

然后我尝试了

npm install

但也没有成功,所以我尝试了

npm install --legacy-peer-deps

然后一切都恢复正常,我能够做到 npm start 和往常一样

【讨论】:

【参考方案15】:

如果您在尝试上述部分/全部选项后仍然遇到此问题,只需将 npm 版本从 7 降级到 6:npm install -g npm@6

【讨论】:

以上是关于无法解决创建新 Angular 项目的依赖树错误的主要内容,如果未能解决你的问题,请参考以下文章

无法解决对样板项目的依赖

无法解析角度离子项目的依赖关系树

ngx-datatable ERESOLVE 无法解析依赖树

创建新应用程序时无法解决spring boot中的依赖关系[关闭]

Angular 2 - 无法实例化循环依赖

创建离子应用程序时无法解析依赖树