为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?

Posted

技术标签:

【中文标题】为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?【英文标题】:Why does "npm install" prefix my packages with "node_modules" in my "package-lock.json" file?为什么“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀? 【发布时间】:2021-01-19 00:00:46 【问题描述】:

我以前从未发生过这种情况,但是现在,当我在我的应用程序的根目录中npm install 时,我的package-lock.json 将所有包更新为node_modules/。这是什么原因造成的?

这是我在运行npm i之前得到的结果

这是我运行npm i后得到的结果

【问题讨论】:

最近在package.jsonajvamqp-connection-manager 中有什么变化吗? @MilanTenk 这发生在我所有的包裹上——不仅仅是这两个。当我在我的机器上本地 npm installnpm uninstall(任何更新 package-lock.json 的东西)时,就会发生这种情况。当我在公司的 ec2 实例上这样做时,它不会发生。 【参考方案1】:

您使用的是什么版本的npm(和node)?

npm v7 已经发布,它附带node v15。由于对 workspaces 的新支持,这引入了一些重大变化...引入了 package-lock.json v2。

我要冒险了:我怀疑你在本地运行 npm v7 而你的 EC2 实例不是。

https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/

【讨论】:

谢谢 Nicholas,这正是问题所在。我正在运行最新版本的节点。我用nvm use v15.6.0 降级,npm i 不再在我的包前面加上node_modules/【参考方案2】:

我能够通过运行在我的计算机上重现 OP 的问题

npm install -g npm@7

然后运行

npx create-react-app my-app

检查 my-app/package-lock.json 确认行为发生了变化。

然后我使用

npm 降级到 6.14.11
npm install -g npm

删除文件夹 my-app 并重复上述create-react-app 步骤。这一次,检查 my-app/package-lock.json 确认“正常”行为。

【讨论】:

以上是关于为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?的主要内容,如果未能解决你的问题,请参考以下文章

npm install

为啥 npm install react-native 不起作用?

npm install 是不是总是获得最新的*兼容*版本的依赖项?

npm install 遇到问题

npm install 缺少模块

为啥在 npm install 之后 npm 正在运行准备脚本,我该如何停止它?