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

带proj-前缀的OpenAI API Key从.env读取失效求助

问题描述

在基于Next.js/React/TypeScript集成OpenAI API的项目中,使用旧格式sk-xxxxx的API Key时,通过process.env.OPENAI_API_KEY从.env文件读取并初始化OpenAI实例可正常工作。但改用新的项目型API Key(格式sk-proj-xxxxx)后,出现invalid_api_key错误,排查发现从环境变量读取的Key丢失了proj-部分。直接将Key作为字符串传入初始化则可正常运行。

相关代码(route.ts)

import { auth } from "@clerk/nextjs/server";
import { NextResponse } from "next/server";
import OpenAI from "openai";

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY, // 问题出在这里
});

const instructionMessage = {
  role: "system",
  content: `blah blah instructions`,
};

async function POST(req: Request) {
  try {
    const { userId } = auth();
    const body = await req.json();
    const { messages } = body;
    const lastMessage = messages[messages.length - 1];

    if (!userId) {
      return new NextResponse("Unauthorized", { status: 401 });
    }

    if (!openai.apiKey) {
      return new NextResponse("OpenAi Api Key not configured"), { status: 500 };
    }

    if (!messages || messages.length === 0) {
      return new NextResponse("Input Required", { status: 400 });
    }

    const response = await openai.chat.completions.create({
      model: "gpt-4o-mini",
      messages: [instructionMessage, lastMessage],
    });

    return NextResponse.json(response.choices[0].message);
  } catch (error) {
    console.log("[CODE_ERROR]", error);
    return new NextResponse("Internal error", { status: 500 });
  }
}

export { POST };
解决思路
  • 检查.env文件格式:确保.env中OPENAI_API_KEY=sk-proj-xxxxx无多余空格、引号,也未被转义。直接复制完整Key,不要手动修改格式。
  • 验证环境变量读取结果:在POST函数开头添加日志console.log("API Key:", process.env.OPENAI_API_KEY);,查看终端输出确认Key的完整度。
  • 延迟初始化OpenAI实例:将OpenAI实例的初始化移到POST函数内部,避免模块加载阶段环境变量未完全加载的问题。修改示例:
    async function POST(req: Request) {
      try {
        const apiKey = process.env.OPENAI_API_KEY;
        if (!apiKey) {
          return new NextResponse("OpenAi Api Key not configured", { status: 500 });
        }
        const openai = new OpenAI({ apiKey }); // 内部初始化
        // 后续逻辑保持不变
      }
    }
    
  • 确认Next.js环境变量配置:确保.env文件在项目根目录,变量名无拼写错误(服务端变量无需加NEXT_PUBLIC_前缀)。
  • 清理缓存并重启服务:执行npm run build或重启开发服务器,确保新环境变量被加载。
  • 升级OpenAI SDK:旧版本SDK可能不支持新格式Key,执行npm update openai升级到最新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:31:05