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

我有一个节点包。 当我从软件包根目录运行npm install ,它安装了一堆东西,但是打印出几个如下所示的错误信息:

npm WARN unmet依赖关系/用户/ seanmackesey / google_drive / code / explore / generator / node_modules / findup-sync / node_modules / glob需要graceful-fs@'~1.2.0',但会加载

我必须对npm install究竟做什么感到困惑。 如果它检测到依赖项,不应该安装它吗? 在什么情况下会给我这样的错误信息,以及如何解决依赖关系?

我相信这是因为依赖解决scheme有点破,请参阅https://github.com/isaacs/npm/issues/1341#issuecomment-20634338

您可能需要手动安装具有未满足依赖关系的顶级模块:

 npm install findup-sync@0.1.2 

或者构build你的package.json,这样任何顶级模块也是其他模块的依赖关系。

你的问题也可能是npm未能下载软件包,超时或什么都没有。 有时重新运行npm install补救措施。 您也可以使用npm install findup-sync@0.1.2手动安装失败的软件包。

在尝试npm install之前可能会有帮助的其他步骤是:

  • 使用rm -rf node_modules/
  • 运行npm cache clean

解释为什么有时需要删除node_modules :显然,如果在npm install过程中嵌套的模块安装失败,后续的npm install将不会检测到这些缺失的嵌套的依赖关系。 如果是这样的话,有时只要删除那些缺less嵌套模块的顶层依赖就足够了,再次运行npm install 。 请参阅https://github.com/npm/npm/issues/1336

npm install期间,WIFI发生故障时发生在我身上。 删除node_modules并重新运行npm install修复了它。

我通过使用这些命令行解决了这个问题

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

完成!

将NPM升级到最新版本可以极大地帮助解决这个问题。 上面dule的回答是正确的说,依赖pipe理有点破,但是这似乎主要是针对老版本的npm。

命令npm list给出了所有安装的node_modules的列表。 当我从版本1.4.2升级到版本2.7.4时,以前用WARN unmet dependency标记的许多模块不再被注意到。

要更新npm,您应该在MacOSX或Linux上inputnpm install -g npm 。 在Windows上,我发现重新下载并重新运行nodejs安装程序是更新npm的更有效方法。

即使在删除了node_modules目录之后,上面的答案也没有完全帮助我。

下面的命令最后帮助了我:

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

请注意,这会通过不安全的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

祝你好运。

这为我解决了这个问题:

  1. 根据错误更正package.json的版本号;
  2. 删除node_modulesrm -rf node_modules );
  3. 重新运行npm install

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

有些事情在类似的情况下,我会添加一个其他的步骤。

请注意,在npm版本> 1.4.9上,'npm install'安装devDependencies。 首先尝试删除现有的模块和caching:

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

然后尝试:

 npm install --dev npm update --dev 

这至less会解决recursion依赖关系的解决scheme。

–devrecursion安装devDependencies(并永远运行..)它如何可以帮助解决版本差异?

您可以尝试删除node_moduls文件夹,然后清理npmcaching,然后再次运行“npm i”

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

npm update -g

之后就可以安装了。

我试图在运行npm install的自动化部署系统上工作,所以很多这些解决scheme在自动化的时尚中不适合我。 我没有去删除/重新创buildnode_modules/也不能轻易更改Node.js版本。

所以我结束了运行npm shrinkwrap – 将npm-shrinkwrap.json文件添加到我的部署包,并从那里运行安装。 这为我解决了这个问题。 把shrinkwrap文件当成'helper',npm似乎能够find正确的软件包并为我安装。 (Shrinkwrap也有其他function,但这是我在这个特定情况下所需要的)。

我在安装反应包的时候遇到了这个问题,这对我npm install --save <package causing this error>npm install --save <package causing this error>

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

例如:

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

注意你的angular度版本,如果你在angular度2.xx下工作,所以也许你需要升级到angular度4.xx

一些依赖需要angular4

这里是如何安装angular4或更新您的项目的教程。

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

 sudo npm install -g npm 

更新到4.0.0

更新到4就像更新你的Angular依赖到最新版本一样简单,并且双重检查你是否想要animation。 这对大多数使用情况都适用。

在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 

然后运行你通常使用的任何ng服务或npm start命令,一切都应该工作。

如果您依赖animation,请从您的根NgModule @angular/platform-browser/animations导入新的BrowserAnimationsModule 。 没有这个,你的代码将被编译和运行,但是animation会触发一个错误。 从@angular/coreimport已弃用,请使用新包的导入

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