Jenkins容器内执行npm run dev报missing script错误求助
npm run dev报"missing script: dev"的问题 我之前也碰到过类似的情况,明明本地执行npm run dev完全正常,到Jenkins容器里就报错找不到dev脚本,大概率是路径、文件同步或者执行环境的小问题,咱们一步步来排查:
1. 先确认Jenkins构建时的工作目录是否正确
Jenkins的默认工作目录可能不是你存放package.json的文件夹,这是最常见的原因。你可以在npm run dev命令前加两步验证:
# 打印当前工作目录,确认是否在项目文件夹下 pwd # 查看当前目录文件列表,确认package.json是否存在 ls -la
如果发现当前目录不对,一定要先切换到package.json所在的文件夹再执行npm命令,比如:
cd /path/to/your/project-directory npm run dev
2. 确认package.json是否被完整拉取到Jenkins容器中
有时候Jenkins的源码拉取步骤(比如Git克隆)可能出了问题,导致package.json没被同步进来,或者内容不完整。你可以在构建步骤里加一条命令查看文件内容:
cat package.json
重点检查scripts字段里是否真的包含"dev": "webpack-dev-server --progress --colors --inline --hot"这一行。如果文件不存在或者内容不对,就得检查Jenkins的源码拉取配置,确保整个项目文件都被正确克隆到容器里了。
3. 验证npm/node版本和可用脚本列表
虽然你说本地和容器里的npm版本一致,但还是可以在容器里确认一下当前环境的版本,以及npm能识别的脚本:
# 查看npm和node版本 npm --version node --version # 查看npm能识别的所有脚本 npm run
如果npm run的输出里没有dev选项,那肯定是package.json的问题;如果有,那可能是命令执行时的其他隐藏问题(比如权限)。
4. 检查文件权限问题
Jenkins容器里的运行用户可能没有读取package.json的权限,导致npm无法解析脚本。你可以查看文件的权限信息:
ls -l package.json
如果权限不对,可以尝试临时调整权限(更推荐从Jenkins的运行用户配置入手,确保它有项目目录的读写权限):
chmod 644 package.json
按照上面的步骤排查,基本上就能定位到问题了。我当时碰到的就是Jenkins默认工作目录不对,没进到项目文件夹里,加了cd命令就解决了。
内容的提问来源于stack exchange,提问作者Flavio

