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

Node.js调用OpenAI API遇await语法错误,如何解决?

解决await语法错误并实现Express调用OpenAI API的Hello World

问题原因

你遇到的SyntaxError是因为CommonJS模块(用require导入的文件)的顶层作用域不能直接使用await,只有ES模块(通过package.json设置"type": "module"或使用.mjs后缀)才支持顶层await。OpenAI官方示例默认假设你使用ES模块环境,而你的代码是CommonJS格式,直接复制就会触发报错。

适配Express场景的解决方案

因为你需要在Express路由中调用OpenAI API,正确的做法是把API调用放到标记为async的路由处理函数里,这样就能合法使用await。修改后的完整代码如下:

const express = require('express')
const app = express()

const { Configuration, OpenAIApi } = require("openai");

const configuration = new Configuration({
  apiKey: "你的API密钥"
});
const openai = new OpenAIApi(configuration);

// 将OpenAI调用逻辑放入async路由处理函数
app.get('/', async function (req, res) {
  try {
    const completion = await openai.createCompletion({
      model: "text-davinci-002",
      prompt: "Hello world",
    });
    const openAiResponse = completion.data.choices[0].text;
    res.send(`OpenAI响应:${openAiResponse}`);
  } catch (error) {
    // 捕获API调用失败的异常
    res.status(500).send(`调用失败:${error.message}`);
  }
})

app.listen(3000, () => {
  console.log('服务器运行在http://localhost:3000');
})

其他可选方案(使用顶层await)

如果你想沿用官方示例的顶层写法,需要将项目切换为ES模块:

  1. 在项目根目录的package.json中添加"type": "module"
  2. 将所有require导入替换为import语法,示例:
    import express from 'express';
    import { Configuration, OpenAIApi } from "openai";
    

官方示例无报错的原因

OpenAI官方示例是针对ES模块环境编写的,当项目配置为ES模块时,顶层await是合法语法。但Node.js项目默认是CommonJS格式,所以直接复制示例代码会触发语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:55:54