为什么npm install说我有未满足的依赖项?

我有一个节点包 . 当我从包根运行 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)

3 years ago

我相信这是因为依赖解析有点破,见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就足够了 . 看到

3 years ago

当WIFI在 npm install 期间失败时,它发生在我身上 . 删除 node_modules 并重新运行 npm install 修复它 .

3 years ago

我通过使用这些命令行修复了这个问题

  • $ rm -rf node_modules/

  • $ sudo npm update -g npm

  • $ npm install

完成!

3 years ago

将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的更有效方法 .

3 years ago

删除 node_modules 目录后,上述答案对我没有帮助 .

以下命令最终帮助了我:

npm config set registry http://registry.npmjs.org/

请注意,这会通过不安全的HTTP连接提取节点模块 .

Src:https://stackoverflow.com/a/13119867/4082503

3 years ago

对于每一个 -- UNMET PEER DEPENDENCY ,对于前者 . -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2 ,使用 npm install --save rxjs@5.0.0-rc.2 安装该依赖项,直到您没有 UNMET DEPENDENCIES 为止 .

祝好运 .

3 years ago

这解决了我:

  • 根据错误更正 package.json 中的版本号;

  • 删除 node_modulesrm -rf node_modules );

  • 重新运行 npm install .

重复这些步骤,直到没有更多错误 .

3 years ago

在类似的情况下,我会添加另一个步骤 .

请注意,在npm version> 1.4.9上,'npm install'确实安装了devDependencies . 首先尝试删除现有模块和缓存:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

然后尝试:

npm install --dev
npm update --dev

这至少会解决递归依赖性解析 .

3 years ago

--dev递归安装devDependencies(及其永远运行..)它如何帮助解决版本差异?

您可以尝试删除node_moduls文件夹,然后清理npm缓存,然后再次运行'npm i'

3 years ago

我在安装React Native CLI时遇到了类似的问题 . 我不确定在阅读这里的答案后我应该删除哪个 /node_modules 目录 . 我最终跑了

npm update -g

然后能够安装包 .

3 years ago

我试图在一个运行 npm install 的自动部署系统上工作,因此很多这些解决方案都无法删除/重新创建 node_modules/ ,也无法轻松更改Node.js版本 .

所以我最终运行 npm shrinkwrap - 将 npm-shrinkwrap.json 文件添加到我的部署包中,并从那里运行安装 . 这解决了我的问题;使用shrinkwrap文件作为'helper',npm似乎能够找到合适的软件包并为我安装它们 . (Shrinkwrap也有其他功能,但这是我在这种特殊情况下所需要的) .

3 years ago

我在安装react包时遇到了这个问题,这对我有用: npm install --save <package causing this error>

3 years ago

就我而言,npm的更新解决了它 .

sudo npm install -g npm

3 years ago

我运行 npm list 并安装了列为UNMET DEPENDENCY的所有软件包

例如:

├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1

3 years ago

如果你在角度2.x.x下工作,请注意你的角度版本,所以你可能需要升级到角度4.x.x

一些依赖关系需要角度4

Here is a tutorial for how to install angular 4 or update your project.

3 years ago

Updating to 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启动命令,一切都应该工作 .

如果您依赖动画,请从根 NgModule 中的 @angular/platform-browser/animations 导入新的 BrowserAnimationsModule . 如果没有这个,您的代码将编译并运行,但动画将触发错误 . 来自 @angular/core 的进口已弃用,请使用新包中的导入

import { trigger, state, style, transition, animate } from '@angular/animations';.