我在尝试使用 MERN 构建一个 AI 图像生成网站时遇到了这个错误:
请求的模块 ‘openai’ 没有提供名为 ‘Configuration’ 的导出。
file:///C:/Users/Rashmika%20Satish/ai_website/server/routes/dalleRoutes.js:3import {Configuration, OpenAIApi} from ‘openai’;^^^^^^^^^^^^^ SyntaxError: 请求的模块 ‘openai’ 没有提供名为 ‘Configuration’ 的导出at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)at async ModuleJob.run (node:internal/modules/esm/module_job:190:5)
Node.js v18.15.0 [nodemon] 应用程序崩溃 – 等待文件更改后启动…
这是 dalleRoutes.js 文件的内容:
import express from 'express';import * as dotenv from 'dotenv';import {Configuration, OpenAIApi} from 'openai';dotenv.config();const router = express.Router();
这是 index.js 文件的内容:
import express from 'express'import * as dotenv from 'dotenv';import cors from 'cors';import connectDB from './mongodb/connect.js';import postRoutes from './routes/postRoutes.js';import dalleRoutes from './routes/dalleRoutes.js';dotenv.config();const app = express();app.use(cors());app.use(express.json({limit: '50mb'}));app.use('/api/v1/post', postRoutes);app.use('/api/v1/dalle', dalleRoutes);app.get('/', async(req, res)=>{ res.send('Hello from CreateAI');})const startServer = async () =>{ try{ connectDB(process.env.MONGODB_URL); app.listen(8080, () => console.log('Server has started on port http://localhost:8080')) }catch(error){ console.log(error); } }startServer();
这是 postRoutes.js 文件的内容
import express from 'express';import * as dotenv from 'dotenv';import {v2 as cloudinary} from 'cloudinary';import Post from '../mongodb/models/post.js';dotenv.config();const router = express.Router();
回答:
我遇到了同样的错误。我猜你是在按照 JSM 教程创建这个应用。在大量搜索之后,我终于在五天前在 OpenAI 论坛上找到了一个类似的讨论,看来这是版本变更 – 在 v4 中配置 API 密钥已经简化了。
如果你有兴趣,可以关注这个论坛:https://community.openai.com/t/getting-an-error-when-importing-configuration-and-openaiapi-from-openai/325012
这是关于从 v3 迁移到 v4 的 Github 指南:https://github.com/openai/openai-node/discussions/217
简而言之,只需运行 npm exec openai migrate
,它应该会自动迁移并更改你的代码库中的代码到最新版本,并解决这个版本问题。