Fixing 500 Internal Server Errors in Nuxt 3 Sessions and Authentication

因网站的认证授权失效了,进行重新登陆,此时发现接口返回了 500。这就有点奇怪了,最近前后端都没有进行任何逻辑变动,只是各自进行了包升级。前端是 Vue Nuxt3,部署在 AWS Amplify。后端是 Python FastAPI,部署在 AWS Lambda 上。

经过一系列检查和调试,最终发现问题是出在 Nuxt 的配置上。无论任何的部署配置,一直都是以安全、稳定的最小化修改,而这个 Nuxt3 项目在 Amplify 上的部署,也是保持此原则。Nuxt 内没有特别的定义,Amplify 的构建设置几乎就是默认的,并且一直都是基于最新的稳定版本 Node22,认证授权一直是 nuxt-auth-utils 包,JWT token。在问题发现前,生产环境和本地环境都无问题,也用了一段时间了。而此次发生问题时,在本地调试时是没有问题的。

问题的根本原因是,当前认为 NUXT_SESSION_PASSWORD 没有设置。在 CloudWatch 日志中显示了:

  • [nuxt-auth-utils] NUXT_SESSION_PASSWORD environment variable or runtimeConfig.session.password was not set.
  • H3Error: Empty password

好吧,怪不得本地测试依然正常。简要整理了下修改后,已经正常运行的配置,如下:

Nuxt 的 nuxt.config.ts 配置:

export default defineNuxtConfig({
  compatibilityDate: '2025-07-15',
  modules: ['nuxt-auth-utils'],
  runtimeConfig: {
    session: {
      password: process.env.NUXT_SESSION_PASSWORD,
    },
  },
})

AWS Amplify 的构建设置:

version: 1
frontend:
  phases:
    preBuild:
      commands:
        - 'corepack enable'
        - 'npx --yes nypm install'
    build:
      commands:
        - 'cp .env.example .env'
        - 'sed -i "s/NUXT_SESSION_PASSWORD=/NUXT_SESSION_PASSWORD=${NUXT_SESSION_PASSWORD}/" .env'
        - 'npx nuxt build'
  artifacts:
    baseDirectory: .amplify-hosting
    files:
      - "**/*"

注意:AWS Amplify 控制台,托管 - 环境变量,增加 NUXT_SESSION_PASSWORD 变量和值。Nuxt 项目根目录下有 .env.example 文件,并且里面有一行内容为 NUXT_SESSION_PASSWORD=

几个官方参考资料: