Невозможно найти модуль «../server/require-hook» Развертывание веб-приложения Nextjs Azure с помощью действий GitHub

Пытаясь развернуть это базовое приложение 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 }}

используйте этот код при архивировании файлов - name: Zip artifact for deployment run: zip release.zip ./* .next -qr

Aslesha Kantamsetti 13.07.2024 11:11

Добавьте этот «start»: «node_modules/next/dist/bin/next start» в ваш package.json.

Aslesha Kantamsetti 13.07.2024 11:58
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
2
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я попробовал ваш код и развернул его в службе приложений Azure через GitHub, и все прошло успешно.

Спасибо @Службе поддержки разработчиков Azure OSS за четкое объяснение.

код: 'MODULE_NOT_FOUND'

  • Вышеупомянутая ошибка в основном возникает в сценариях развертывания Zip, чтобы избежать ошибка: добавьте стартовый скрипт в package.json.
"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"
  }
}
  • Каталог .next содержит выходные данные сборки проекта Next.js, включая скомпилированный JavaScript, CSS и другие статические ресурсы, необходимые для запуска приложения в рабочей среде.
  • .next не включен в папку Zip, поэтому я включил его, используя строки ниже.
 - 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 14.07.2024 05:54

@mrbitzilla Я рад слышать, что это сработало.

Aslesha Kantamsetti 14.07.2024 07:07

Другие вопросы по теме

Похожие вопросы

Как очистить определенную папку при развертывании в эту папку с помощью «az webapp Deploy»
Приложение Nuxt 3 развернуто в Azure. Переменные среды игнорируются в разделе nitro файла nuxt.config.ts
SQL позволяет вставлять повторяющиеся данные, когда две вставки выполняются почти одновременно
Чтение настроек диагностики Azure Entra ID
Конечная точка диспетчера трафика Azure: следующие местоположения, указанные в свойстве geoMapping для конечной точки, не поддерживаются
Измените конфигурацию для регистрации приложения, чем для корпоративного приложения
Новая сетевая карта с общедоступным IP-адресом не имеет подключения к Интернету, а существующая сетевая карта работает нормально
Как скопировать все контейнеры без явного упоминания в массиве между двумя разными учетными записями хранения
Предоставление доступа субъекту службы управляемой идентификации — Microsoft Graph PowerShell
Репликация базы данных SQL Azure и хранилища BLOB-объектов в конфигурации с несколькими регионами