本地编译都成功,拿到jenkins编译就报错,本次原因是package-lock.json未上传,导致依赖不一致出问题.
错误样本
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] build: `webpack --progress --hide-modules --config build/webpack.prod.config.js`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2022-12-06T01_10_27_870Z-debug.log
什么是lock文件
生成锁定文件
在package.json npm 和 Yarn 跟踪项目依赖项的文件中,版本号并不总是准确的。相反,您可以定义一系列版本。这样,您可以选择包的特定主要和次要版本,但允许 npm 安装可能修复某些错误的最新补丁。
在语义版本控制的理想世界中,补丁版本不会包含任何破坏性更改。但不幸的是,情况并非总是如此。npm 采用的策略可能会导致两台机器以相同的package.json文件结束,但安装了不同版本的软件包——这可能会引入错误。
为避免包版本不匹配,确切安装的版本被固定在包锁定文件中。每次添加模块时,npm 和 Yarn 分别创建(或更新)一个package-lock.json和yarn.lock文件。这样,您可以保证另一台机器安装完全相同的软件包,同时仍然具有package.json.
解决办法
方法1
npm编译就把开发锁定版本的package-lock.json文件也传到新服务器或jenkins编译目录,再重新编译
yarn就是package-lock
方法2
node_modules临时copy过去覆盖有问题的机器
标签:npm,ERR,package,admin,lock,编译,json,2.0
From: https://www.cnblogs.com/aizzw/p/16965653.html