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

Node.js中OpenAIApi非构造函数错误及.env密钥调用问题

解决 TypeError: OpenAIApi is not a constructor 问题

1. 检查 OpenAI SDK 版本

OpenAI Node.js SDK 在 v4 版本后彻底调整了使用方式,不再提供 OpenAIApi 构造函数。根据你安装的版本选择对应写法:

  • 若使用 v3 及以下版本:
const { OpenAI, OpenAIApi } = require("openai");
const openai = new OpenAIApi(new OpenAI({ apiKey: process.env.OPENAI_API_KEY }));
  • 若使用 v4+ 版本(推荐):
const OpenAI = require("openai");
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

// 调用示例(以聊天接口为例)
async function getChatResponse() {
  const completion = await openai.chat.completions.create({
    model: "gpt-3.5-turbo",
    messages: [{ role: "user", content: "测试消息" }],
  });
  console.log(completion.choices[0].message.content);
}
getChatResponse();

如果坚持使用旧版 OpenAIApi,可降级 SDK:

npm install openai@3.3.0

2. 确认.env 文件加载正常

确保已通过 dotenv 正确读取环境变量:

  • 安装依赖:
npm install dotenv
  • 在代码最顶部添加加载逻辑:
require('dotenv').config();
// 若使用 ES 模块:import dotenv from 'dotenv'; dotenv.config();

可先打印 console.log(process.env.OPENAI_API_KEY) 确认变量是否成功读取,排除因变量未加载导致的间接错误。

3. 统一模块导入方式

避免混合使用 CommonJS 和 ES 模块语法:

  • CommonJS(package.json 无 "type": "module")用 require
  • ES 模块(package.json 有 "type": "module")用 import
    例如 v3 版本 ES 模块写法:
import { OpenAI, OpenAIApi } from "openai";
const openai = new OpenAIApi(new OpenAI({ apiKey: process.env.OPENAI_API_KEY }));

4. 重置依赖缓存

若依赖安装异常导致模块导出错误,可执行以下操作重置:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者JS-Rock

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:42:02