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

使用GitHub Actions部署Nuxt 3应用至GitHub Pages时预渲染报错

Nuxt 3部署GitHub Pages时预渲染路由报错问题

正在学习CI/CD相关知识,尝试通过GitHub Actions将Nuxt 3应用部署至GitHub Pages。但在GitHub Actions执行nuxt generate命令时,应用中的两个路由(/pinia-test和/users)始终出现预渲染错误。本地环境运行nuxt generate时完全没有报错,推测该问题与GitHub Actions环境有关。

GitHub Actions运行日志(错误信息在末尾)

Static HTML export with Nuxt

Run npm run generate
  npm run generate
  shell: /usr/bin/bash -e {0}
  env:
    GITHUB_PAGES: true

> generate
> nuxt generate

[log] Nuxi 3.6.5
[log] Nuxt 3.6.5 with Nitro 2.5.2
[warn] Using experimental payload extraction for full-static output. You can opt-out by setting `experimental.payloadExtraction` to `false`.
[info] Building client...
[info] vite v4.3.9 building for production...
[info] transforming...
[info] ✓ 143 modules transformed.
[info] rendering chunks...
[info] computing gzip size...
[info] .nuxt/dist/client/manifest.json                     3.60 kB │ gzip:  0.58 kB
[info] .nuxt/dist/client/_nuxt/error-500.aa16ed4d.css      1.95 kB │ gzip:  0.74 kB
[info] .nuxt/dist/client/_nuxt/error-404.23f2309d.css      3.63 kB │ gzip:  1.12 kB
[info] .nuxt/dist/client/_nuxt/index.bbc96c86.css         12.13 kB │ gzip:  2.49 kB
[info] .nuxt/dist/client/_nuxt/default.6c42ce1b.js         0.22 kB │ gzip:  0.19 kB
[info] .nuxt/dist/client/_nuxt/index.4de762ee.js           0.26 kB │ gzip:  0.21 kB
[info] .nuxt/dist/client/_nuxt/LayoutHeader.0c5ff510.js    0.30 kB │ gzip:  0.21 kB
[info] .nuxt/dist/client/_nuxt/PageTwo.d35c4254.js         0.66 kB │ gzip:  0.42 kB
[info] .nuxt/dist/client/_nuxt/index.9a8be0fb.js           1.01 kB │ gzip:  0.61 kB
[info] .nuxt/dist/client/_nuxt/layout.a2ac6278.js          1.32 kB │ gzip:  0.67 kB
[info] .nuxt/dist/client/_nuxt/error-500.ad8bffd3.js       1.88 kB │ gzip:  0.99 kB
[info] .nuxt/dist/client/_nuxt/index.38caa40e.js           2.02 kB │ gzip:  0.95 kB
[info] .nuxt/dist/client/_nuxt/pinia.6d855e92.js           3.33 kB │ gzip:  1.72 kB
[info] .nuxt/dist/client/_nuxt/error-404.ba077f45.js       6.53 kB │ gzip:  2.91 kB
[info] .nuxt/dist/client/_nuxt/index.764b2877.js          95.68 kB │ gzip: 16.14 kB
[info] .nuxt/dist/client/_nuxt/entry.f95dd8db.js         144.02 kB │ gzip: 54.40 kB
[info] ✓ built in 2.79s
[success] Client built in 2810ms
[info] Building server...
[info] vite v4.3.9 building SSR bundle for production...
[info] transforming...
[info] ✓ 95 modules transformed.
[info] rendering chunks...
[info] .nuxt/dist/server/_nuxt/index-styles.c4f3f660.mjs            0.08 kB
[info] .nuxt/dist/server/_nuxt/error-404-styles.cf00f4cc.mjs        0.15 kB
[info] .nuxt/dist/server/_nuxt/error-500-styles.a001b7ed.mjs        0.15 kB
[info] .nuxt/dist/server/styles.mjs                                 0.44 kB
[info] .nuxt/dist/server/_nuxt/index-e12b288f.js                    0.22 kB │ map:   5.28 kB
[info] .nuxt/dist/server/_nuxt/default-dc738482.js                  1.06 kB │ map:   0.13 kB
[info] .nuxt/dist/server/_nuxt/island-renderer-111fb402.js          1.11 kB │ map:   1.43 kB
[info] .nuxt/dist/server/_nuxt/LayoutHeader-747fd40b.js             1.18 kB │ map:   0.14 kB
[info] .nuxt/dist/server/_nuxt/index-cb071b83.js                    1.61 kB │ map:   0.14 kB
[info] .nuxt/dist/server/_nuxt/error-500-styles-1.mjs-0a86f27a.js   2.17 kB │ map:   0.12 kB
[info] .nuxt/dist/server/_nuxt/PageTwo-95ad2d12.js                  2.31 kB │ map:   1.06 kB
[info] .nuxt/dist/server/_nuxt/index-3a419ccf.js                    2.63 kB │ map:   1.99 kB
[info] .nuxt/dist/server/_nuxt/error-500-90d6b764.js                3.10 kB │ map:   3.78 kB
[info] .nuxt/dist/server/_nuxt/layout-fe23ec6d.js                   3.33 kB │ map:   7.04 kB
[info] .nuxt/dist/server/_nuxt/index-9e1c42d7.js                    3.47 kB │ map:   3.65 kB
[info] .nuxt/dist/server/_nuxt/error-404-styles-1.mjs-6ef6e240.js   3.86 kB │ map:   0.12 kB
[info] .nuxt/dist/server/_nuxt/error-404-1f4e83a5.js                9.75 kB │ map:  18.91 kB
[info] .nuxt/dist/server/_nuxt/index-styles-1.mjs-bfad4fc1.js      12.38 kB │ map:   0.11 kB
[info] .nuxt/dist/server/server.mjs                                33.74 kB │ map:  79.34 kB
[info] .nuxt/dist/server/_nuxt/index-429347c0.js                   97.95 kB │ map: 107.00 kB
[info] ✓ built in 1.62s
[success] Server built in 1634ms
[success] [nitro] Generated public .output/public
[info] [nitro] Initializing prerenderer
[info] [nitro] Prerendering 7 initial routes with crawler
[log] [nitro]   ├─ /PageTwo (65ms)
[log] [nitro]   ├─ /sample-page (62ms)
[log] [nitro]   ├─ /pinia-test (82ms) (Error: [500] )
[log] [nitro]   ├─ /users (83ms) (Error: [500] )
[log] [nitro]   ├─ /200.html (63ms)
[log] [nitro]   ├─ /404.html (63ms)
[log] [nitro]   ├─ / (81ms)
[log] [nitro]   ├─ /PageTwo/_payload.json (1ms)
[log] [nitro]   ├─ /sample-page/_payload.json (1ms)
[log] [nitro]   ├─ /_payload.json (1ms)
[log] [nitro] 
Errors prerendering:
[log] [nitro]   ├─ /pinia-test (500)
[log] [nitro]   ├─ /users (500)
[log] [nitro]
Error:  Exiting due to prerender errors.
  at prerender (node_modules/nitropack/dist/shared/nitro.1db3349c.mjs:189:11)
  at async node_modules/nuxt/dist/index.mjs:2641:7
  at async build (node_modules/nuxt/dist/index.mjs:3794:5)
  at async Object.invoke (node_modules/nuxi/dist/chunks/build.mjs:59:5)
  at async Object.invoke (node_modules/nuxi/dist/chunks/generate.mjs:36:5)
  at async _main (node_modules/nuxi/dist/cli.mjs:49:20)
Error: Process completed with exit code 1.

GitHub Actions工作流文件

# Sample workflow for building and deploying a Nuxt site to GitHub Pages
#
# To get started with Nuxt see: https://nuxtjs.org/docs/get-started/installation
#
name: Deploy Nuxt site to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ["main"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Detect package manager
        id: detect-package-manager
        run: |
          if [ -f "${{ github.workspace }}/yarn.lock" ]; then
            echo "manager=yarn" >> $GITHUB_OUTPUT
            echo "command=install" >> $GITHUB_OUTPUT
            exit 0
          elif [ -f "${{ github.workspace }}/package.json" ]; then
            echo "manager=npm" >> $GITHUB_OUTPUT
            echo "command=ci" >> $GITHUB_OUTPUT
            exit 0
          else
            echo "Unable to determine package manager"
            exit 1
          fi
      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: "18"
          cache: ${{ steps.detect-package-manager.outputs.manager }}
      - name: Setup Pages
        uses: actions/configure-pages@v3
        with:
          # Automatically inject router.base in your Nuxt configuration file and set
          # target to static (https://nuxtjs.org/docs/configuration-glossary/configuration-target/).
          #
          # You may remove this line if you want to manage the configuration yourself.
          static_site_generator: nuxt
      - name: Restore cache
        uses: actions/cache@v3
        with:
          path: |
            dist
            .nuxt
          key: ${{ runner.os }}-nuxt-build-${{ hashFiles('dist') }}
          restore-keys: |
            ${{ runner.os }}-nuxt-build-
      - name: Install dependencies
        run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }}
      - name: Static HTML export with Nuxt
        run: npm run generate
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v2
        with:
          path: ./dist

  # Deployment job
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:57:02