我正在嘗試使用 github 操作構建 CI/CD 管道,以便構建我的應用程式并將其部署到 heroku。我使用了以下 YAML 檔案。但它在 github 操作中顯示錯誤。任何人都可以幫我解決這個問題。我reository是bigshopcicd。我的專案結構是bigshop | -backend | -frontend | -package.json
錯誤-
Run npm run build
sh:1:反應腳本:未找到
npm 錯誤!代碼 ELIFECYCLE npm ERR!系統呼叫產生 npm ERR!檔案 sh npm 錯誤!errno ENOENT npm 錯誤!前端@0.1.0 構建:react-scripts build
npm 錯誤!生成 ENOENT
[email protected] build /home/runner/work/bigshopcicd/bigshopcicd cd frontend && npm run build
[email protected] build /home/runner/work/bigshopcicd/bigshopcicd/frontend react-scripts build
npm 錯誤!npm 錯誤!前端@0.1.0 構建腳本失敗。npm 錯誤!這可能不是 npm 的問題。上面可能有額外的日志輸出。npm WARN 本地 package.json 存在,但是缺少 node_modules,您是要安裝嗎?
npm 錯誤!可以在以下位置找到此運行的完整日志:npm ERR!/home/runner/.npm/_logs/2021-12-23T08_13_25_954Z-debug.log npm ERR!代碼 ELIFECYCLE npm ERR!錯誤號 1 npm 錯誤號![email protected] 構建:cd frontend && npm run build
npm 錯誤!退出狀態 1 npm ERR!npm 錯誤![email protected] 構建腳本失敗。npm 錯誤!這可能不是 npm 的問題。上面可能有額外的日志輸出。
npm 錯誤!可以在以下位置找到此運行的完整日志:npm ERR!/home/runner/.npm/_logs/2021-12-23T08_13_25_975Z-debug.log 錯誤:行程已完成,退出代碼為 1。
管道.yml-
name: Deployment pipeline
on:
push:
branches:
- main
pull_request:
branches: [main]
types: [opened, synchronize]
jobs:
simple_deployment_pipeline:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: '12.x'
- name: npm install
run: npm install
- name: build
run: npm run build
- name: deployment
uses: akhileshns/heroku-deploy@v3.12.12
if: ${{ github.event_name == 'push' && !contains(join(github.event.commits.*.message, ' ,'), '#skip') }}
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: bigshopcicd
heroku_email: fakirsumon78@gmmail.com
healthcheck: 'https://bigshopcicd.herokuapp.com/health'
checkstring: 'ok'
rollbackonhealthcheckfailed: true
- uses: actions/checkout@v2
- name: Bump version and push tag
uses: anothrNick/github-tag-action@eca2b69f9e2c24be7decccd0f15fdb1ea5906598
if: ${{ github.event_name == 'push' && !contains(join(github.event.commits.*.message, ' ,'), '#skip') }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
WITH_V: true
DEFAULT_BUMP: patch
RELEASE_BRANCHES: main
package.json 檔案-
"scripts": {
"start": "node backend/server.js",
"dev": "set NODE_ENV=DEVELOPMENT& nodemon backend/server",
"prod": "set NODE_ENV=PRODUCTION& nodemon backend/server",
"seeder": "node backend/utils/seeder.js",
"build": "cd frontend && npm run build",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false && npm install --prefix frontend && npm run build --prefix frontend"
},
uj5u.com熱心網友回復:
您的 npm install 命令在您的根 package.json 中運行安裝,其中不包含 react 依賴項。然后構建步驟進入 ./frontend 并嘗試使用那些未獲取的反應腳本。
您可以使用 npm 的preinstall目標來安裝前端依賴項。
還要嘗試查看是否可以將專案拆分為兩個不同的專案,因為這種結構看起來很脆弱,而且實際上失去了擁有單獨后端/前端的優勢。(加上你的腳本變得過于復雜)
編輯:
預安裝不是專門為安裝節點模塊而設計的,它只是您可以添加到 package.json 的一個步驟,它將在安裝步驟之前由 npm 運行,它可以包含任意腳本命令。在你的情況下,也許嘗試:
"scripts": {
"preinstall": "cd frontend && npm install",
"start": "node backend/server.js",
"dev": "set NODE_ENV=DEVELOPMENT& nodemon backend/server",
"prod": "set NODE_ENV=PRODUCTION& nodemon backend/server",
"seeder": "node backend/utils/seeder.js",
"build": "cd frontend && npm run build"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393359.html
