Ubuntu18.04下root用户执行npm run build报react-scripts权限拒绝求助
解决React项目构建时
react-scripts: Permission denied错误的方案 看到你遇到的这个权限问题——在Ubuntu 18.04用root用户构建React项目时碰到react-scripts: Permission denied(错误码126),但Windows下能正常构建,这大概率是Linux系统的执行权限规则或npm运行环境的问题,给你几个针对性的解决方案:
1. 避免用root用户执行npm操作
npm官方强烈不推荐用root用户运行npm命令,哪怕你给了目录777权限,npm在安装依赖时可能会自动调整文件权限,反而引发权限冲突。你可以切换到jenkins用户操作(毕竟项目目录属于jenkins工作空间):
su - jenkins cd /var/lib/jenkins/workspace/MedAverter/medaverter-front npm run build
如果切换用户后权限不足,先给jenkins用户赋予该目录的所有权:
chown -R jenkins:jenkins /var/lib/jenkins/workspace/MedAverter/medaverter-front
2. 修复node_modules中脚本的执行权限
从Windows复制过来的项目,node_modules里的可执行脚本(比如react-scripts)可能没有Linux要求的执行权限。你可以直接给目标脚本添加权限:
chmod +x /var/lib/jenkins/workspace/MedAverter/medaverter-front/node_modules/.bin/react-scripts
或者给整个.bin目录递归添加执行权限:
chmod +x -R /var/lib/jenkins/workspace/MedAverter/medaverter-front/node_modules/.bin/
3. 清理缓存并重新安装依赖
有时候依赖缓存或不完整安装会导致这类问题,建议彻底清理后重新安装:
# 清理npm缓存 npm cache clean --force # 删除现有依赖和锁文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 再次尝试构建 npm run build
4. 检查react-scripts脚本的Shebang
如果上面的方法都无效,可以检查脚本的Shebang是否正确:
cat /var/lib/jenkins/workspace/MedAverter/medaverter-front/node_modules/react-scripts/bin/react-scripts.js | head -1
正常应该显示#!/usr/bin/env node,如果缺失或路径错误,手动修正这条内容后再给脚本添加执行权限即可。
这些方法应该能解决你的问题——毕竟Windows不区分文件执行权限,而Linux对这一点要求严格,尤其是root用户操作时更容易出现权限冲突。
内容的提问来源于stack exchange,提问作者user3217883
相关产品推荐
相关产品推荐

