Node.js中使用OpenAI SDK调用API时出现core.js报错求助
问题描述
在Node.js环境中使用OpenAI API,通过OpenAI SDK实现GPT文本补全功能时,运行报错,错误指向/node_modules/openai/core.js:44行的代码:
const isJSON = contentType?.includes('application/json') || contentType?.includes('application/vnd.api+json');
应用因此崩溃,无法定位原因。使用的代码如下:
import OpenAI from 'openai'; const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); export const gptResponse = async (req, res) => { try { const { message } = req.body; const getResponse = await openai.chat.completions.create({ model: 'gpt-3.5-turbo', messages: [ { role: 'system', content: 'You are a helpful assistant.', }, { role: 'user', content: message, }, ], }); console.log(getResponse.data.choices[0].message.content); return res.json(getResponse.data.choices[0].message.content); } catch (err) { console.log(err); return res.status(400).send('Error. Try again.'); } };
解决方案
- 升级Node.js版本:OpenAI v4及以上版本SDK要求Node.js版本≥18.17.0或≥20.6.0,低版本对可选链操作符(
?.)等语法支持不足,会触发core.js中的代码异常,升级到符合要求的版本即可解决。 - 修正响应数据访问方式:OpenAI v4 SDK的响应结构已调整,无需通过
.data属性获取内容,直接访问getResponse.choices[0].message.content即可。原代码中getResponse.data会返回undefined,后续链式访问会引发异常,间接导致core.js报错。修正后的代码片段:
console.log(getResponse.choices[0].message.content); return res.json(getResponse.choices[0].message.content);
- 验证API密钥有效性:确认
process.env.OPENAI_API_KEY已正确加载,可在初始化OpenAI实例前添加console.log(process.env.OPENAI_API_KEY)检查,空密钥会导致请求失败,触发异常流程。 - 更新OpenAI SDK:执行
npm update openai或yarn upgrade openai将SDK更新到最新稳定版,修复可能存在的内部响应解析逻辑bug。
内容的提问来源于stack exchange,提问作者Lawrence
相关产品推荐
相关产品推荐

