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

Nuxt3集成OpenAI API:本地正常,部署Vercel后报错

解决Nuxt 3部署Vercel后调用OpenAI API返回500错误的方案

1. 完善服务端错误捕获与日志输出

当前服务端API代码未做错误处理,一旦请求失败会直接抛出未捕获异常导致500。修改server/api/generate.js,添加错误捕获并输出日志,方便定位问题:

import { Configuration, OpenAIApi } from "openai";

export default defineEventHandler(async (event) => {
  try {
    const body = await readBody(event)
    const config = useRuntimeConfig()
    
    // 先校验API密钥是否存在
    if (!config.secret) {
      throw new Error('OpenAI API密钥未配置')
    }

    const configuration = new Configuration({
      apiKey: config.secret,
    });
    const openai = new OpenAIApi(configuration);

    const completion = await openai.createCompletion({
      model: "text-davinci-003",
      prompt: body.sentence,
      temperature: 0.6,
      max_tokens: 420,
    });

    return completion.data.choices[0].text;
  } catch (error) {
    // 输出错误到Vercel函数日志
    console.error('请求处理失败:', error);
    // 返回明确的错误信息给前端
    throw createError({
      statusCode: error.response?.status || 500,
      statusMessage: error.response?.data?.error?.message || error.message || '服务器内部错误'
    })
  }
})

2. 强制Vercel重新部署并清除缓存

添加环境变量后,旧部署的缓存可能未加载新变量:

  • 进入Vercel项目控制台
  • 点击顶部的"重新部署"按钮
  • 在弹出窗口中勾选"清除构建缓存",再执行部署

3. 校验环境变量配置

  • 确认Vercel中设置的环境变量名称为OPENAI_API_KEY,与nuxt.config.ts中process.env.OPENAI_API_KEY完全一致(大小写敏感)
  • 检查变量值是否正确,无多余空格或字符

4. 尝试切换Vercel部署预设

当前使用vercel-edge预设,Edge函数存在部分限制,可尝试切换为普通Serverless预设:
修改nuxt.config.ts:

export default defineNuxtConfig({
  runtimeConfig: {
    secret: process.env.OPENAI_API_KEY,
  },
  nitro: {
    preset: 'vercel', // 替换为vercel预设
  },
});

5. 查看Vercel函数日志定位具体问题

部署完成后,在Vercel控制台进入"函数"页面,找到/api/generate函数,查看执行日志:

  • 日志会显示具体错误原因,比如API密钥缺失、OpenAI调用超限、网络超时等
  • 根据日志信息针对性解决问题

内容的提问来源于stack exchange,提问作者Awesom-o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:05:41