簡體   English   中英

"npm run build" = "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

我確實花了幾天時間試圖弄清楚這一點。 建議?

解決方案1:

我認為你已經全局安裝了 react-script。 所以試試這個命令

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

而不是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 運行。 我就是這樣解決的。

  1. rm -rf /node_modules
  2. npm i
  3. npm運行android

我終於想出了解決這個問題的辦法。 花了好幾天的功夫。 首先,我刪除了 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.jsonnpm 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM