npm5.0版本多了个packjson-lock.json,用npm install命令安装不了新的依赖,有什么办法解决吗?

遇到一个问题,引用stylus失败,已解决,但是有点困惑

背景如下:
npm目前升级到了5.0.3
npm install的时候目录会多一个package-lock.json这个文件
此时我在package.json的devDependencies中添加了

"stylus": "^0.54.5",
"stylus-loader": "^3.0.1"

然后在终端重新运行npm install的时候,项目中的node_modules并没有出现stylus文件夹
查了下资料说是新版本的坑
https://mp.weixin.qq.com/s?__...
给的解决办法是切换回之前的npm版本……

我的解决过程
1、删除package-lock.json,重新npm install,node_modules中出现了stylus文件夹了,然而还是报错
2、在终端直接运行 sudo npm install stylus-loader stylus --save-dev 结果就编译成功了

如有小伙伴有同样的问题,可以按照我这样试试,然后想问问大神们,这个有啥好的办法啊,莫非之后我在package.json里面写的依赖都要在终端自己指定安装一下……

阅读 24k
8 个回答

这个我也发现了,我查了一下,是说这个是npm5.0 的坑,我的理解是想要安装只能指定版本。这是我在Stack Overflow看到的答案,不过外语不好,只能意会一部分。 你这个问题,分在vue.js 不是很好,可以换一下npm或者node.js试试,也许会有人更清楚。
https://stackoverflow.com/que...
……………………
17-12-7补充
这个package-lock.json 是npm 5 做的一个优化,加快了npm 下载的速度。条件就是将依赖的详细信息,包括版本,下载地址等,都写在了里面。然后想要更新版本的话,就不能够去通过修改package 里面的版本依赖来实现了,只能通过npm install packageName@version 来实现。
如果不对,欢迎指正。

我也遇到了这个问题。删除node_modules,然后再删除lock文件,再重新npm install即可

没去看文档,暂时有个方法就是删除lock文件 再 npm i 就可以了

新手上路,请多包涵

?它类似yarn.lock文件,这个package-lock.json是npm5新特性,帮助你锁定依赖版本的,避免‘这个程序在我电脑能跑的’问题。。。是需要check-in到版本控制的,这样同组的伙伴不至于因为依赖更新导致版本坑。

新手上路,请多包涵

这个文件是保证你的package.json文件中所有的安装包版本和安装包版本所依赖的二级安装包的版本不会发生变化,解决办法,如果package.json文件有更新,在npm install之前,rm -rf package-lock.json ,删除该文件,然后再执行npm install即可,不需要删除node_modules(删除node_modules相当于把所有的重装一遍,这是不需要的)

lz直接对package.json进行修改以增加依赖项的做法,其实真的不如在终端中直接npm install对应模块。
有两种比较推荐的方法

  1. 直接用@方法安装指定版本的npm包

  2. 将旧版本包先uninstall,然后再次安装

有个万能的npm-check,或者outdate来检查更新和安装指定版本的包

package-lock.json同级目录下添加自定义npm-shrinkwrap.json文件,package-lock.json会失效。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题