我有一个节点包。当我从包根运行npm install
时,它会安装一堆东西,但随后会打印几条错误消息,如下所示:
npm WARN未满足依赖/ Users / seanmackesey / google_drive / code / explore / generator / node_modules / findup-sync / node_modules / glob需要graceful-fs@'~1.2.0'但会加载
我必须对npm install
究竟是什么感到困惑。如果它检测到依赖关系,不应该安装它吗?在什么条件下它会给我这样的错误消息,以及如何解决依赖关系?
答案 0 :(得分:387)
我认为这是因为依赖性解决方案有点破碎,请参阅https://github.com/isaacs/npm/issues/1341#issuecomment-20634338
以下是可能的解决方案:
手动需要安装包含未满足依赖项的顶级模块: npm install findup-sync@0.1.2
重新构建package.json。将所有高级模块(作为其他模块的依赖项)放在底部。
重新运行'npm install'命令。
问题可能是由于npm由于超时或其他原因导致无法下载所有程序包而导致的。
注意:您也可以使用npm install findup-sync@0.1.2手动安装失败的软件包。
在运行'npm install'之前,执行以下步骤可能有所帮助:
为什么有时需要“删除node_modules”? 当嵌套模块在npm install期间无法安装时,后续的npm install将不会检测那些缺少嵌套的依赖项。
如果是这种情况,有时删除那些缺少嵌套模块的顶级依赖关系,并再次运行npm install就足够了。见
答案 1 :(得分:80)
当npm install
期间WIFI发生故障时,我发生了这种情况。正在删除node_modules
并重新运行npm install
修复它。
答案 2 :(得分:34)
我使用这些命令行解决了这个问题
$ rm -rf node_modules/
$ sudo npm update -g npm
$ npm install
已经完成了!
答案 3 :(得分:11)
将NPM升级到最新版本可以极大地帮助解决这个问题。 dule上面的答案是正确的,说依赖管理有点破,但似乎这主要是针对旧版本的npm。
命令npm list
为您提供所有已安装node_modules
的列表。当我从版本1.4.2升级到版本2.7.4时,之前标记为WARN unmet dependency
的许多模块不再被注明。
要更新npm,您应该在MacOSX或Linux上键入npm install -g npm
。在Windows上,我发现重新下载并重新运行nodejs安装程序是更新npm的更有效方法。
答案 4 :(得分:9)
即使删除node_modules
目录,上述答案也无法完全帮助我。
下面的命令最终帮助了我:
npm config set registry http://registry.npmjs.org/
请注意,这会通过不安全的HTTP连接提取节点模块。
答案 5 :(得分:3)
对于每个-- UNMET PEER DEPENDENCY
,例如。 -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2
,使用npm install --save rxjs@5.0.0-rc.2
安装该依赖项,直到您不再拥有UNMET DEPENDENCIES
。
祝你好运。
答案 6 :(得分:2)
这解决了我:
package.json
中的版本号; node_modules
(rm -rf node_modules
); npm install
。重复这些步骤,直到没有错误为止。
答案 7 :(得分:1)
我正在努力开发一个运行npm install
的自动部署系统,所以很多这些解决方案对我来说都不适合自动化。我无法删除/重新创建node_modules/
,也无法轻松更改Node.js版本。
所以我最终运行npm shrinkwrap
- 将npm-shrinkwrap.json
文件添加到我的部署包中,然后从那里运行安装。这解决了我的问题;使用shrinkwrap文件作为帮助',npm似乎能够找到合适的软件包并为我安装它们。 (Shrinkwrap也有其他功能,但这是我在这种特殊情况下所需要的)。
答案 8 :(得分:1)
我运行MinGW GCC
并安装了所有列为UNMET DEPENDENCY
例如:
npm list
├── UNMET DEPENDENCY css-loader@^0.23.1
答案 9 :(得分:1)
就我而言,npm的更新解决了它。
sudo npm install -g npm
答案 10 :(得分:1)
我在安装react包时遇到了这个问题,这对我有用:
npm install --save <package causing this error>
答案 11 :(得分:1)
我在安装React Native CLI时遇到了类似的问题。在阅读完这里的答案之后,我不确定我应该删除哪个/node_modules
目录。我最终只是跑了
npm update -g
之后能够安装包。
答案 12 :(得分:1)
- dev递归安装devDependencies(并且它永远运行..) 它如何帮助解决版本差异?
您可以尝试删除node_moduls文件夹,然后清除npm缓存,然后运行&#39; npm i&#39;再次
答案 13 :(得分:1)
有些事情在类似的情况下,我会再添加一步。
请注意,在npm版本&gt; 1.4.9,'npm install'确实安装了devDependencies。首先尝试删除现有模块和缓存:
remove node_modules $ rm -rf node_modules/
run $ npm cache clean
然后尝试:
npm install --dev
npm update --dev
这至少会解决递归依赖性解析。
答案 14 :(得分:0)
如果你在角度2.x.x下工作,请注意你的角度版本,所以你可能需要升级到角度4.x.x
某些依赖项需要角度4
Here is a tutorial for how to install angular 4 or update your project.
答案 15 :(得分:0)
更新至4.0.0
更新到4就像将Angular依赖项更新到最新版本一样简单,并仔细检查是否需要动画。这适用于大多数用例。
在Linux / Mac上:
npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save
在Windows上:
npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save
然后运行你通常使用的任何服务或npm启动命令,一切都应该有效。
如果您依赖动画,请从根BrowserAnimationsModule
中的@angular/platform-browser/animations
导入新的NgModule
。如果没有这个,您的代码将编译并运行,但动画将触发错误。不推荐使用@angular/core
中的导入,使用新包中的导入
import { trigger, state, style, transition, animate } from '@angular/animations';.
答案 16 :(得分:0)
npm install
将安装npm-shrinkwrap.json
中的所有软件包,但如果未在package.json
中预先安装,则可能会忽略它们。
如果您的项目有一个npm-shrinkwrap.json
,请确保在每次添加添加/删除/更改npm shrinkwrap
时都运行package.json
来重新生成它。