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
相关产品推荐
相关产品推荐

