为啥“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.json
和ajv
和amqp-connection-manager
中有什么变化吗?
@MilanTenk 这发生在我所有的包裹上——不仅仅是这两个。当我在我的机器上本地 npm install
或 npm 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.11npm install -g npm
删除文件夹 my-app 并重复上述create-react-app
步骤。这一次,检查 my-app/package-lock.json 确认“正常”行为。
【讨论】:
以上是关于为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 npm install react-native 不起作用?