我正试图在Ubuntu18.04上部署我的工作Windows 10 Spring/react应用程序,但是尽管多次尝试修复,我仍然得到了“react-脚本:拒绝许可”错误。希望你们中的一个反应专家能发现我做错了什么。
我的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安装节点和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;34mINFOm在/var/lib/jenkins/workspace/MedAverter/medaverter-front中运行'npm运行构建‘
[1;34mINFOm>medaverter-@0.1.0 build /var/lib/jenkins/workspace/MedAverter/medaverter-front [[1;34mINFOm >react][1;34mINFOm][1;31 31mERRORm sh: 1:**react脚本:拒绝许可**][1;31 31mERRORm错误!]代码ELIFECYCLE [1;31 31mERRORm错误!错误126 [1;31 31mERRORm错误!
react-scripts build[1;31 medaverter错误!出境状态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运行构建>>medaverter-前端@0.1.0构建/var/lib/jenkins/workspace/MedAverter/medaverter-front >>> sh:** run脚本:许可被拒绝** npm错误!代码ELIFECYCLE > npm错误!错误的126号国家预防机制错误!正面@0.1.0Build:>
react-scripts buildnpm!出口状态126
我真的花了好几天时间想办法解决这个问题。有什么建议吗?
发布于 2020-06-08 19:18:48
我终于想出了解决这个问题的办法。这需要几天的努力。首先,我删除了Jenkins项目,创建了一个使用管道而不是Freestyle的新项目。然后我添加了一个带有脚本的Jenkinsfile。这继续失败,但现在我可以灵活地添加额外的命令来处理错误。
一个新的错误是关于小丑工人的。我在DigitalOcean服务器上运行了以下命令以通过该命令:
yarn add jest-worker然后我又犯了旧权限错误。我认为所有这些权限错误都是由于用户jenkins试图运行用户root拥有的东西,尽管所有东西都有777个权限。我不明白,但这是我怎么绕过它的。修改/etc/sudoers文件并添加以下行:
jenkins ALL=(ALL) NOPASSWD:ALL然后修改Jenkins文件脚本以包含递归的chmod和chown。下面是最终起作用的完整脚本:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
echo 'Checkout...'
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
checkout scm
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'sudo chown -R jenkins /var/lib/jenkins/workspace/MedAverter/medaverter-front'
stash 'sources'
}
}
stage('Build') {
steps {
echo 'Build...'
unstash 'sources'
sh 'sudo chmod -R 777 /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'sudo chown -R jenkins /var/lib/jenkins/workspace/MedAverter/medaverter-front'
sh 'mvn clean package -DskipTests'
stash 'sources'
}
}
}
}我还必须将DigitalOcean液滴的内存从1GB增加到2GB,以避免另一个错误。如果有人知道更好的方法来克服那个令人沮丧的权限错误,请评论。
发布于 2020-06-04 12:03:43
解决方案1:
我想你已经在全球范围内安装了反应脚本。所以试试下面的命令
npm install react-scripts --save然后再次运行应用程序。
解决方案2:
尝试以下命令
sudo chmod +x node_modules/.bin/react-scripts然后再次运行应用程序。
解决方案3;
我认为你的npm没有得到许可。你可以试着用sudo跑
sudo npm run build你可以这样解决这个问题
步骤1:
如果您使用的是npm,则检查npm的路径。
which npm您将"/usr/local/bin/npm“这种类型的路径
或
检查纱的路径,如果您正在使用纱线
which yarn您将"/usr/local/bin/npm“这种类型的路径
第2步:
对此路径给予777权限,并尝试运行项目
sudo chmod -R 777 /usr/local/bin/npm发布于 2020-10-30 06:44:36
macOS的解决方案
从项目运行的根:
chmod +x node_modules/.bin/react-scriptshttps://stackoverflow.com/questions/62140265
复制相似问题