无法解决创建新 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
,再次下载并安装了node
,npm 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.8 和 karma-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 Jasmine
html 记者。这可能是破坏代码的原因。
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 build
和 ng 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 无法解析依赖树