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
相关产品推荐
相关产品推荐

