我有一个节点包 . 当我从包根运行 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
究竟是什么感到困惑 . 如果它检测到依赖关系,不应该安装它吗?在什么条件下它会给我这样的错误消息,以及如何解决依赖关系?
16 回答
我相信这是因为依赖解析有点破,见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'之前,执行以下步骤可能会有所帮助:
使用rm -rf node_modules /删除node_modules
运行npm cache clean
为什么有时需要“删除node_modules”?当嵌套模块在npm install期间无法安装时,后续的npm install将不会检测那些缺少的嵌套依赖项 .
如果是这种情况,有时删除那些缺少嵌套模块的顶级依赖关系,并再次运行npm install就足够了 . 看到
当WIFI在
npm install
期间失败时,它发生在我身上 . 删除node_modules
并重新运行npm install
修复它 .我通过使用这些命令行修复了这个问题
$ rm -rf node_modules/
$ sudo npm update -g npm
$ npm install
完成!
将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的更有效方法 .删除
node_modules
目录后,上述答案对我没有帮助 .以下命令最终帮助了我:
请注意,这会通过不安全的HTTP连接提取节点模块 .
Src:https://stackoverflow.com/a/13119867/4082503
对于每一个
-- UNMET PEER DEPENDENCY
,对于前者 .-- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2
,使用npm install --save rxjs@5.0.0-rc.2
安装该依赖项,直到您没有UNMET DEPENDENCIES
为止 .祝好运 .
这解决了我:
根据错误更正
package.json
中的版本号;删除
node_modules
(rm -rf node_modules
);重新运行
npm install
.重复这些步骤,直到没有更多错误 .
在类似的情况下,我会添加另一个步骤 .
请注意,在npm version> 1.4.9上,'npm install'确实安装了devDependencies . 首先尝试删除现有模块和缓存:
然后尝试:
这至少会解决递归依赖性解析 .
--dev递归安装devDependencies(及其永远运行..)它如何帮助解决版本差异?
您可以尝试删除node_moduls文件夹,然后清理npm缓存,然后再次运行'npm i'
我在安装React Native CLI时遇到了类似的问题 . 我不确定在阅读这里的答案后我应该删除哪个
/node_modules
目录 . 我最终跑了npm update -g
然后能够安装包 .
我试图在一个运行
npm install
的自动部署系统上工作,因此很多这些解决方案都无法删除/重新创建node_modules/
,也无法轻松更改Node.js版本 .所以我最终运行
npm shrinkwrap
- 将npm-shrinkwrap.json
文件添加到我的部署包中,并从那里运行安装 . 这解决了我的问题;使用shrinkwrap文件作为'helper',npm似乎能够找到合适的软件包并为我安装它们 . (Shrinkwrap也有其他功能,但这是我在这种特殊情况下所需要的) .我在安装react包时遇到了这个问题,这对我有用:
npm install --save <package causing this error>
就我而言,npm的更新解决了它 .
我运行
npm list
并安装了列为UNMET DEPENDENCY的所有软件包例如:
├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1
如果你在角度2.x.x下工作,请注意你的角度版本,所以你可能需要升级到角度4.x.x
一些依赖关系需要角度4
Here is a tutorial for how to install angular 4 or update your project.
Updating to 4.0.0
更新到4就像将Angular依赖项更新到最新版本一样简单,并仔细检查是否需要动画 . 这适用于大多数用例 .
在Linux / Mac上:
在Windows上:
然后运行你通常使用的任何服务或npm启动命令,一切都应该工作 .
如果您依赖动画,请从根
NgModule
中的@angular/platform-browser/animations
导入新的BrowserAnimationsModule
. 如果没有这个,您的代码将编译并运行,但动画将触发错误 . 来自@angular/core
的进口已弃用,请使用新包中的导入