我有一个节点包。当我从包根目录运行 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
到底做了什么感到困惑。如果它检测到依赖项,不应该安装它吗?在什么情况下它会给我这样的错误消息,我该如何解决依赖关系?
我相信这是因为依赖解析有点破,见https://github.com/npm/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 缓存清理
为什么有时需要“删除 node_modules”?如果嵌套模块在 npm install
期间安装失败,后续的 npm install
将不会检测到那些缺少的嵌套依赖项。
如果是这种情况,有时删除那些缺少的嵌套模块的顶级依赖项并再次运行 npm install
就足够了。看
当 WIFI 在 npm install
期间出现故障时,我发生了这种情况。删除 node_modules
并重新运行 npm install
修复了它。
npm cache clean
。
npm cache clean
和删除 node_modules
,这个建议对我有用。
npm cache clean
对我来说还不够,在“安装”期间联网失败后,我还必须删除 node_modules
才能使其正常工作。
node_modules
目录?我对错误 /usr/local/lib/node_modules/npm/node_modules/read-installed/node_modules/readdir-scoped-modules requires graceful-fs@'^4.1.2'
有类似的问题
我通过使用这些命令行解决了这个问题
rm -rf 节点模块/
$ sudo npm 更新 -g npm
$ npm 安装
完成!
sudo npm install -g read-package-json
或重新安装你的 npm
npm
一起使用,建议改为更改 npm 也想写入的目录的权限或所有权。
sudo
与 npm 一起使用
将 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
目录后,上述答案也没有完全帮助我。
下面的命令终于帮助了我:
npm config set registry http://registry.npmjs.org/
请注意,这会通过不安全的 HTTP 连接拉取节点模块。
来源:https://stackoverflow.com/a/13119867/4082503
npm install
和/或手动安装一些节点包。
对于每个 -- UNMET PEER DEPENDENCY
,例如。 -- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2
,使用 npm install --save rxjs@5.0.0-rc.2
安装该依赖项,直到您不再有 UNMET DEPENDENCIES
。
祝你好运。
ERR! code 1
rm -rf node_modules
,然后是 npm cache clean
和 npm install
。如果还是不行,我建议你再次rm -rf node_modules
,然后是npm i -g yarn
,然后是yarn install
。 Yarn 很好管理node_modules
。祝你好运。
peerDependencies
的用途。促使您有意识地选择版本。
我运行 npm list
并安装了列为 UNMET DEPENDENCY 的所有软件包
例如:
├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1
我在安装 React Native CLI 时遇到了类似的问题。阅读此处的答案后,我不确定应该删除哪个 /node_modules
目录。我最终只是跑了
npm update -g
并且之后能够安装该软件包。
这为我解决了它:
根据错误更正package.json中的版本号;移除 node_modules (rm -rf node_modules);重新运行 npm install。
重复这些步骤,直到不再有错误。
类似的事情,我会添加另一个步骤。
请注意,在 npm 版本 > 1.4.9 上,“npm install”会安装 devDependencies。首先尝试删除现有模块和缓存:
remove node_modules $ rm -rf node_modules/
run $ npm cache clean
然后尝试:
npm install --dev
npm update --dev
这至少会解决递归依赖解析。
--dev 递归安装devDependencies(并且它永远运行..)它如何帮助解决版本差异?
您可以尝试删除 node_moduls 文件夹,然后清理 npm 缓存,然后再次运行“npm i”
我试图在运行 npm install
的自动化部署系统上工作,因此这些解决方案中的许多解决方案在自动化模式下都不适合我。我无法删除/重新创建 node_modules/
,也无法轻松更改 Node.js 版本。
所以我最终运行了 npm shrinkwrap
- 将 npm-shrinkwrap.json
文件添加到我的部署包中,并从那里运行安装。这为我解决了问题;使用 shrinkwrap 文件作为“助手”,npm 似乎能够找到正确的包并为我安装它们。 (Shrinkwrap 还有其他功能,但这是我在这种特殊情况下需要的)。
我在安装反应包时遇到了这个问题,这对我有用:npm install --save <package causing this error>
就我而言,npm 的更新解决了它。
sudo npm install -g npm
npm install
将安装 npm-shrinkwrap.json
中的所有软件包,但如果 package.json
中的软件包未在前者中预设,则它们可能会忽略它们。
如果您的项目有 npm-shrinkwrap.json
,请确保在每次添加添加/删除/更改 package.json
时运行 npm shrinkwrap
重新生成它。
注意你的角度版本,如果你在 angular 2.xx 下工作,那么你可能需要升级到 angular 4.xx
一些依赖项需要 Angular 4
Here is a tutorial for how to install angular 4 or update your project.
更新到 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
然后运行您通常使用的任何 ng serve 或 npm start 命令,一切都应该正常。
如果您依赖动画,请从根 NgModule
中的 @angular/platform-browser/animations
导入新的 BrowserAnimationsModule
。没有这个,你的代码将编译并运行,但动画会触发错误。已弃用来自 @angular/core
的导入,请使用来自新包的导入
import { trigger, state, style, transition, animate } from '@angular/animations';.
不定期副业成功案例分享
npm cache clean
因访问原因不起作用,请尝试sudo npm cache clean
。