[英]why does “npm run build” produce error “react-scripts Permission denied”?
[英]"npm run build" = "react-scripts: Permission denied"
我正在嘗試在 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
我確實花了幾天時間試圖弄清楚這一點。 建議?
我認為你已經全局安裝了 react-script。 所以試試這個命令
npm install react-scripts --save
然后再次運行該應用程序。
試試這個命令
sudo chmod +x node_modules/.bin/react-scripts
然后再次運行該應用程序。
我認為您的npm沒有權限。 您可以嘗試通過 sudo 運行
sudo npm run build
你可以像這樣解決這個問題
如果您使用npm ,請檢查npm的路徑
which npm
你會“/usr/local/bin/npm”這種類型的路徑
或者
如果您使用紗線,請檢查紗線的路徑
which yarn
你會“/usr/local/bin/npm”這種類型的路徑
授予此路徑 777 權限並嘗試運行項目
sudo chmod -R 777 /usr/local/bin/npm
而不是package.json
文件中指定的默認"start": "react-scripts start"
,嘗試將其更改為以下內容,然后嘗試: "scripts": { "start": "node./node_modules/react-scripts/bin/react-scripts.js start" }
從項目的根目錄輸入chmod +x node_modules/.bin/react-scripts
我之前修改了文件夾的權限並撤消了更改。 我相信就是這樣。
我剛剛刪除了node_modules
文件夾並使用yarn
命令重新安裝了依賴項。
sudo rm -rf node_modules
yarn
yarn start
您似乎沒有構建或執行 React 應用程序的正確權限,
您可以做的是嘗試使用將所有者更改為當前用戶
sudo chown -R username:username /var/lib/jenkins/workspace/MedAverter/medaverter-front/
您可以通過在終端中鍵入whoami
來檢查您的用戶名,這是因為當前用戶默認無權訪問var
文件夾或其中的任何內容。 此外,您想更改訪問模式以供所有人使用
sudo chmod 755 /var/lib/jenkins/workspace/MedAverter/medaverter-front/
然后您可以使用更改為root用戶
sudo su
然后使用構建應用程序
npm run build
當我遇到類似的問題時,這對我有用,希望它也對你有用,干杯:)
在我的情況下,它在 npm 運行。 我就是這樣解決的。
我終於想出了解決這個問題的辦法。 花了好幾天的功夫。 首先,我刪除了 Jenkins 項目並使用 Pipeline 而不是 Freestyle 創建了一個新項目。 然后我添加了一個帶有腳本的 Jenkinsfile。 這繼續失敗,但現在我可以靈活地添加額外的命令來處理錯誤。
一個新錯誤是關於 jest-worker 的。 我在 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 液滴的 memory 從 1GB 增加到 2GB 以克服另一個錯誤。 如果有人知道克服令人沮喪的權限錯誤的更好方法,請發表評論。
發生這種情況是因為缺少 package.json 文件只需運行此命令即可解決問題:
npm audit fix
有時 npm 需要 root 權限。 嘗試在命令中使用 sudo。 它為我解決了類似的問題。 這可能會有所幫助。
sudo npm run build
我有同樣的問題,我只使用: package.json和npm i -g react-scripts
中的版本
"react-scripts": "5.0.0"
它是: "react-scripts": "5.0.1"
,我將其更改為"react-scripts": "5.0.0"
npm i
又做了一次
如果它沒有解決問題,請檢查您正在使用的當前版本的 React 的react-scripts
版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.