首页 文章

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

提问于
浏览
382

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

  • 9

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

  • 33

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

  • 77

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

    • $ rm -rf node_modules/

    • $ sudo npm update -g npm

    • $ npm install

    完成!

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

  • 1

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

    以下命令最终帮助了我:

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

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

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

  • 0

    对于每一个 -- 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 中的版本号;

    • 删除 node_modulesrm -rf node_modules );

    • 重新运行 npm install .

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

  • 0

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

    请注意,在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

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

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

  • 1

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

    npm update -g

    然后能够安装包 .

  • 2

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

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

  • 1

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

  • 1

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

    sudo npm install -g npm
    
  • 1

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

    例如:

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

  • 377

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

    一些依赖关系需要角度4

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

  • 1

    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';.
    

相关问题