Пытаясь развернуть это базовое приложение Nextjs в веб-приложение Azure (из GitHub Actions), я получаю следующее исключение во время выполнения:
Error: Cannot find module '../server/require-hook'
Ok
2024-07-13T05:21:05.27594
Require stack:
Ok
2024-07-13T05:21:05.2759785
- /home/site/wwwroot/node_modules/.bin/next
Ok
2024-07-13T05:21:05.2759846
at Module._resolveFilename (node:internal/modules/cjs/loader:1145:15)
Ok
2024-07-13T05:21:05.275989
at Module._load (node:internal/modules/cjs/loader:986:27)
Ok
2024-07-13T05:21:05.2759931
at Module.require (node:internal/modules/cjs/loader:1233:19)
Ok
2024-07-13T05:21:05.2759972
at Module.patchedRequire (/agents/nodejs/node_modules/diagnostic-channel/dist/src/patchRequire.js:16:46)
Ok
2024-07-13T05:21:05.2760016
at Hook._require.Module.require (/agents/nodejs/node_modules/require-in-the-middle/index.js:167:34)
Ok
2024-07-13T05:21:05.276006
at require (node:internal/modules/helpers:179:18)
Ok
2024-07-13T05:21:05.27601
at Object.<anonymous> (/home/site/wwwroot/node_modules/.bin/next:6:1)
Ok
2024-07-13T05:21:05.2760147
at Module._compile (node:internal/modules/cjs/loader:1358:14)
Ok
2024-07-13T05:21:05.2760187
at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
Ok
2024-07-13T05:21:05.2760226
at Module.load (node:internal/modules/cjs/loader:1208:32) {
Ok
2024-07-13T05:21:05.2760349
code: 'MODULE_NOT_FOUND',
Ok
2024-07-13T05:21:05.2760387
requireStack: [ '/home/site/wwwroot/node_modules/.bin/next' ]
Ok
2024-07-13T05:21:05.2760428
}
Развертывание работает, если оно выполняется через VSCode с расширениями Azure, но мне нужно, чтобы оно было автоматизировано с помощью действий GitHub.
Файл развертывания — это файл по умолчанию, который Azure предоставляет при настройке непрерывной интеграции. Есть идеи, как это исправить?
Мой yml на случай, если вы не хотите открывать ссылку:
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy Node.js app to Azure Web App - nextjs-az-template
on:
push:
branches:
- master
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js version
uses: actions/setup-node@v3
with:
node-version: '20.x'
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm run test --if-present
- name: Zip artifact for deployment
run: zip release.zip ./* -r
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: node-app
path: release.zip
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: node-app
- name: Unzip artifact for deployment
run: unzip release.zip
- name: 'Deploy to Azure Web App'
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: 'nextjs-az-template'
slot-name: 'Production'
package: .
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_FB5C5356BD1A48A79DF07D1243712E42 }}
Добавьте этот «start»: «node_modules/next/dist/bin/next start» в ваш package.json.
Я попробовал ваш код и развернул его в службе приложений Azure через GitHub, и все прошло успешно.
Спасибо @Службе поддержки разработчиков Azure OSS за четкое объяснение.
код: 'MODULE_NOT_FOUND'
"start": "node_modules/next/dist/bin/next start",
пакет.json:
{
"name": "nextjs-az-webapp-template",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "node_modules/next/dist/bin/next start",
"lint": "next lint"
},
"dependencies": {
"react": "^18",
"react-dom": "^18",
"next": "14.2.5"
},
"devDependencies": {
"typescript": "^5",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"eslint": "^8",
"eslint-config-next": "14.2.5"
}
}
- name: Zip artifact for deployment
run: zip next.zip ./* .next -qr
.github/рабочие процессы:
name: Build and deploy Node.js app to Azure Web App - kanextjsapp1
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Node.js version
uses: actions/setup-node@v3
with:
node-version: '18.x'
- name: npm install, build, and test
run: |
npm install
npm run build --if-present
npm run test --if-present
- name: Zip artifact for deployment
run: zip next.zip ./* .next -qr
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: node-app
path: next.zip
deploy:
runs-on: ubuntu-latest
needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: node-app
- name: Unzip artifact for deployment
run: unzip next.zip
- name: 'Deploy to Azure Web App'
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: 'kanextjsapp1'
slot-name: 'Production'
package: next.zip
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_<AzureKey> }}
Он успешно развернут через GitHub, как показано ниже.
Вывод службы приложений Azure:
Сработало отлично, спасибо
@mrbitzilla Я рад слышать, что это сработало.
используйте этот код при архивировании файлов
- name: Zip artifact for deployment run: zip release.zip ./* .next -qr