npm5.5.1 好坑啊!
发布于 5 年前 作者 linchen1987 5077 次浏览 来自 分享

坑的原因是 package-lock.json

这货的目的很棒,可以把依赖固定死,但是,这货貌似也要求安装环境强一致!只要有一点不一样都不行!导致我明明在本地能构建成功,但是在服务器构建时却会失败。

最后在~/.npmrc 中把npm的配置加上 package-lock=false ,不理它了!

16 回复

cool! 我想禁用这个 lock 很久了! 终于知道配置项了.

good!终于不需要每次删package-lock.json,谢谢lz。

每次手动删 lock 可以拜拜了,赞!

来自酷炫的 CNodeMD

我都是git里面配置不提交就好了

@linruilin 仅仅不提交没用,本地还在。

使用yarn的我,不知道楼上说的是什么…

提交的时候 ,忽略package-lock.json…,这货经常冲突,需要删除再合并,反正他是自动生成的,不关我事,直接删除。。。。我用的yarn

@atian25 只要不提交到git 里面去 生产环境pull的时候没拉到lock。install的时候会在生产服务器上面自己生成自己的lock 这样和本地的lock没多大关系吧。 如果在有docker的情况下 那样会隔离的更彻底

@axetroy yarn也有yarn.lock啊

@linruilin 线上肯定没问题啦。我们一直都这样。但线下帮人排查问题还是要一遍一遍得提醒要删除,很累的

@atian25 我在腾讯维护的内部npm命令,直接通过命令行参数的方式忽略了这个lock,我也不喜欢这东西。锁定 registry 问题多多。

@alsotang tnpm 本身也是不支持这个 lock 的,但在维护 egg 的时候,社区的人没办法~ 所以最近我正痛苦着,每次说重新安装依赖的时候,都要婆婆妈妈的说一句「记得不要锁版本」,现在哟这个一劳永逸的方法,就好多了。

赞。不用每次手删package-lock.json了。

@atian25 你们的tnpm跟腾讯的tnpm应该不是一回事。阿里现在是基于自研的npminstall,我为了没有兼容性的烦恼,是基于原生npm封装的。

这玩意可以确定通过测试的 依赖库版本和生产环境的保持一致, 不然测试没问题,上线因为依赖库出问题那就哭了。

避免 “我的电脑是正常的” 的问题

https://cnodejs.org/topic/5969d38eaf1a22d018d96fa7

回到顶部