【发布时间】:2020-09-20 05:29:19
【问题描述】:
我正在尝试在 Ubuntu 18.04 上部署我工作的 Windows 10 Spring-Boot/React 应用程序,但尽管多次尝试修复,但仍然收到“react-scripts: Permission denied”错误。希望你们中的一位反应专家能够发现我做错了什么。
我的 package.json 看起来像这样
{
"name": "medaverter-front",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"axios": "^0.19.2",
"bootstrap": "^4.4.1",
"react": "^16.13.0",
"react-dom": "^16.13.0",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.0",
"react-table-6": "^6.11.0",
"react-validation": "^3.0.7",
"reactstrap": "^6.5.0",
"validator": "^12.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
我以 root 身份登录并使用 nvm 安装 node 和 lts。我是这样安装 nvm 的:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
然后这样做:
nvm install node
nvm use node
nvm install --lts
nvm use --lts
然后我cd 到/var/lib/jenkins/workspace/MedAverter/medaverter-front 并像这样安装node_modules:
npm install -g
然后递归地把权限改成777,像这样:
chmod -R 777 node_modules
我还将所有 /root/.nvm 权限递归更改为 777,如下所示:
chmod -R 777 /root/.nvm
我可以使用它构建一次
npm run build
但后来我从 Jenkins 运行“立即构建”,但同样失败
[[1;34mINFO[m] Running 'npm run build' in /var/lib/jenkins/workspace/MedAverter/medaverter-front [[1;34mINFO[m] [[1;34mINFO[m] > medaverter-front@0.1.0 build /var/lib/jenkins/workspace/MedAverter/medaverter-front [[1;34mINFO[m] > react-scripts build [[1;34mINFO[m] [[1;31mERROR[m] sh: 1: **react-scripts: Permission denied** [[1;31mERROR[m] npm ERR! code ELIFECYCLE [[1;31mERROR[m] npm ERR! errno 126 [[1;31mERROR[m] npm ERR! medaverter-front@0.1.0 build: `react-scripts build` [[1;31mERROR[m] npm ERR! Exit status 126
然后我 cd 到 /var/lib/jenkins/workspace/MedAverter/medaverter-front 并运行
npm run build
而且还会再次出现同样的错误:
> root@ubuntu-s-1vcpu-1gb-nyc1-01:/var/lib/jenkins/workspace/MedAverter/medaverter-front# > npm run build > > > medaverter-front@0.1.0 build /var/lib/jenkins/workspace/MedAverter/medaverter-front > > react-scripts build > > sh: 1: **react-scripts: Permission denied** npm ERR! code ELIFECYCLE > npm ERR! errno 126 npm ERR! medaverter-front@0.1.0 build: > `react-scripts build` npm ERR! Exit status 126
我确实花了几天时间试图弄清楚这一点。有什么建议吗?
【问题讨论】:
-
检查你运行node的ubuntu用户权限
-
为什么要全局安装,然后在非全局目录
node_modules中更改权限?您是否尝试删除-g?此外,您的 chmod 东西不是必需的,实际上非常危险。请不要那样做。权限被拒绝通常意味着未设置可执行标志,或者它被认为是另一个用户,并且除了用户/组之外的任何人都没有设置这些位。不过,您安装模块的方式非常奇怪。 -
是的,我最初在没有 -g 的情况下尝试过,但无法让它工作。添加了 -g 稍后尝试不同的解决方案。我知道最终的解决方案不应该涉及设置 777 权限,但我只是想让一些东西起作用,然后在真正的解决方案被揭示后回到正确的方式。你知道那是什么吗?
-
我在使用 sudo 安装 npm 和 nvm 时遇到了类似的问题。卸载并使用常规用户权限重新安装后,为我修复了它。
标签: node.js reactjs jenkins npm