记一次npm配置引发的local bug排查事件

起因:

  • 同事离职,项目交接,我成接盘侠

事故:

  • 拉了代码,没有任何改动,运行后有一个组件的样式有问题,看了线上环境没问题,拉同事看了他的本地也没问题

排查过程:

  • 安装依赖时有一个奇怪现象,项目是有package.lock的,按理说直接安装依赖一般除了registry配置问题导致找不到包,不会有其他问题,但是大家都是公司内容配置过的,不应该有问题。然后npm i之后确实没报错,然后就npm run serve,然后就出问题了
    • 报错
    Error: Cannot find module @rollup/rollup-win32-x64-msvc. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
    
    • 找不到@rollup/rollup-win32-x64-msvc,行,看一眼package-lock.json"version": "4.9.6",行,npm i @rollup@4.9.6,OK,安装成功,run!成功!
    • 打开网页,弹窗组件样式不对!
  • 然后用npm list排查各个主要依赖的版本,后package-lock对得上啊
  • 代码肯定没问题,肯定是我本地的环境配置有问题,方向别错,往环境配置看看出啥问题了吧。
  • 然后尝试了重装依赖,更换node版本,更换yarn,都无济于事
  • 但是更换yarn的时候,又发生了一件奇怪的事,因为yarn在安装依赖的时候会有提示报错哪个包找不到,让你安装其他版本,没错,就是报错@rollup/rollup-win32-ia32-msvc找不到:
    • Couldn't find any versions for "@rollup/rollup-win32-ia32-msvc" that matches "4.46.2"
      
    • 然后yarn会给你其他版本选择安装
    • OK,那我安装其他版本嘛。OK,run!
    • 还是样式不对
  • 等等,刚刚yarn报错什么?4.46.2?package-lock里不是4.9.6吗?为什么安装没走package-lock?
  • 冲浪一下,AI问一下,得到的答案似乎都不太对得上
  • 看一眼npm的配置呢,找到.npmrc文件,看看里面有啥
    • 嗯,registry配置,没问题。嗯,strict-ssl,没问题。嗯,no_proxy,没问题。嗯,package-lock=false,没问题。
    • 嗯?刚刚好像混入了什么奇怪的东西,package-lock=false???
    • 哪个SB加的配置(大概率是某个走神的夜晚博主自己加的)。删掉,删掉node_modules,重装
    • oh!holy shi.!没@rollup/rollup-win32-ia32-msvc的错了
    • 再去看看页面,也没问题了

总结:

  • 当你发现安装依赖的版本和package-lock.jsonyarn.lock不一致时,找到你的.npmrc文件,看看里面是否有一句package-lock=false,有的话,删掉完事儿
posted @ 2025-08-18 17:34  Mizuki-Vone  阅读(54)  评论(0)    收藏  举报