You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions构建NextJS至Azure时模块未找到错误求助

问题:GitHub Actions部署Next.js到Azure App Service时构建阶段出现Webpack模块未找到错误

错误详情

构建阶段触发如下Webpack模块未找到错误:

▲ Next.js 14.2.22

Creating an optimized build ...
Failed to compile.
./src/app/(pages)/(admin)/admin/events/[eventId]/edit/page.tsx
Module not found: Can't resolve '@/validation/event'
./src/app/(pages)/(admin)/admin/events/add/page.tsx
Module not found: Can't resolve '@/validation/event'
./src/app/(pages)/(admin)/admin/orders/[orderId]/page.tsx
Module not found: Can't resolve '@/app/components/checkout/checkoutProduct/checkoutProduct'
./src/app/(pages)/(admin)/admin/products/[productId]/edit/page.tsx
Module not found: Can't resolve '@/validation/product'
./src/app/(pages)/(admin)/admin/products/add/page.tsx
Module not found: Can't resolve '@/validation/product'
> Build failed because of webpack errors
Error: Process completed with exit code 1.

本地与CI表现差异

本地执行npm run build可正常完成,相关文件均存在且导入无错误,但GitHub Actions构建过程中持续触发上述错误。

相关配置文件

tsconfig.json

{
  "compilerOptions": {
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "noEmit": true,
    "esModuleInterop": true,
    "module": "esnext",
    "moduleResolution": "bundler",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve",
    "incremental": true,
    "plugins": [
      {
        "name": "next"
      }
    ],
    "paths": {
      "@/*": ["./src/*"],
      "@/validation/*": ["./src/validation/*"],
      "@/app/*": ["./src/app/*"],
      "@/components/*": ["./src/app/components/*"]
    }
  },
  "include": [
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx",
    ".next/types/**/*.ts",
    "build/types/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

GitHub Actions工作流文件

name: Build and deploy Next.js app to Azure Web App

on:
  push:
    branches:
      - main  
  workflow_dispatch:

env:
  NEXT_PUBLIC_BASE_URL: ${{ secrets.NEXT_PUBLIC_BASE_URL}}
  DATABASE_URL: ${{ secrets.DATABASE_URL }}
  REDIS_URL: ${{ secrets. REDIS_URL }}
  REDIS_TOKEN: ${{ secrets.REDIS_TOKEN }}
  NEXT_PUBLIC_RECAPTCHA_PUBLIC_KEY: ${{ secrets.NEXT_PUBLIC_RECAPTCHA_PUBLIC_KEY }}
  RECAPTCHA_SECRET_KEY: ${{ secrets.RECAPTCHA_SECRET_KEY }}
  JWT_SECRET: ${{ secrets.JWT_SECRET }}
  NODE_ENV: ${{ secrets.NODE_ENV }}
  NEXT_COMMUNICATION_SERVICES_CONNECTION_STRING: ${{ secrets.NEXT_COMMUNICATION_SERVICES_CONNECTION_STRING }}
  NEXT_RAZORPAY_KEY_ID: ${{ secrets.NEXT_RAZORPAY_KEY_ID }}
  NEXT_RAZORPAY_SECRET_KEY: ${{ secrets.NEXT_RAZORPAY_SECRET_KEY }}
  APPLICATION_PUBLISH_PROFILE: ${{ secrets.APP_PUBLISH_PROFILE }}
  WEBAPP_NAME: ${{ secrets.WEBAPP_NAME }}

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Set up Node.js version
        uses: actions/setup-node@v4
        with:
          node-version: "20.16.0"


      - name: npm install, build, and test
        run: |
          npm install
          npm run build
          mv ./build/static ./build/standalone/build
          mv ./public ./build/standalone

      - name: "Deploy to Azure Web App"
        id: deploy-to-webapp
        uses: azure/webapps-deploy@v3
        with:
          app-name: ${{ env.WEBAPP_NAME }}
          slot-name: "Production"
          publish-profile: ${{ env.APPLICATION_PUBLISH_PROFILE }}
          package: ./build/standalone

next.config.js

/** @type {import('next').NextConfig} */
const nextConfig = {
  reactStrictMode: false,
  distDir: 'build',
  output: 'standalone',
};

export default nextConfig;

已尝试的解决方法

  • 将工作流中的Node.js版本改为本地使用的版本
  • 尝试启用Webpack 5
  • 以上操作均未解决问题,需找到构建失败的原因并修复

内容的提问来源于stack exchange,提问作者Tejas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:56:03