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

Node.js搭建OpenAI图像生成后端遇400错误,请求协助排查

排查OpenAI图像生成API返回400错误的问题

我用Node.js搭建了基于OpenAI API的图像生成后端,核心功能是根据前端传入的提示词生成图像,但持续收到OpenAI返回的400错误,功能无法正常运行。已在.env文件中配置OPENAI_API_KEY和MongoDB_URL,无法定位问题根源。


相关代码及错误信息

Node.js后端代码

import express from 'express';
import * as dotenv from 'dotenv';
import { Configuration, OpenAIApi } from 'openai';

dotenv.config();

const router=express.Router();

const configuration= new Configuration({
    apiKey:process.env.OPENAI_API_KEY,
});

const openai= new OpenAIApi(configuration);

router.route('/').get((req,res)=>{
    res.send('Hello everyone !!')
})

router.route('/').post(async(req,res)=>{
    try {
       // 来自前端的参数
        const {prompt}=req.body;

        const aiResponse=await openai.createImage({
            prompt,
            n:1,
            size:'1024x1024',
            response_format:'b64_json',
        });

        const image=aiResponse.data.data[0].b64_json;
        res.status(200).json({photo:image});
        
    } catch (error) {
        console.error(error);
        res.status(500).send(error?.response.data.error.message || 'Something went wrong..')
        
    }
})

export default router;

React前端请求代码

const [formFill,setFormFill]=useState({
    name:'',
    prompt:'',
    photo:''
})

const [imgGenerate,setImgGenerate]=useState(false);
const imgCreate= async ()=>{
    if (formFill.prompt) {
      try {
        setImgGenerate(true);
        const response = await fetch('http://localhost:5000/api/v1/dalleApi', {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({
            prompt: formFill.prompt,
          }),
        });

        const data = await response.json();
        setFormFill({ ...formFill, photo: `data:image/jpeg;base64,${data.photo}` });
      } catch (err) {
        alert(err);
      } finally {
        setImgGenerate(false);
      }
    } else {
      alert('Please provide a proper prompt !');
    }
}

错误响应信息

Request failed with status code 400
    at createError (D:\Web dev Projects\ai_image_generation_app\backend\node_modules\axios\lib\core\createError.js:16:15)
    at settle (D:\Web dev Projects\ai_image_generation_app\backend\node_modules\axios\lib\core\settle.js:17:12)
    at IncomingMessage.handleStreamEnd (D:\Web dev Projects\ai_image_generation_app\backend\node_modules\axios\lib\adapters\http.js:322:11)
    at IncomingMessage.emit (node:events:525:35)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  config: {
    transitional: {
      silentJSONParsing: true,
      forcedJSONParsing: true,
      clarifyTimeoutError: false
    },
    adapter: [Function: httpAdapter],
    transformRequest: [ [Function: transformRequest] ],
    transformResponse: [ [Function: transformResponse] ],
    timeout: 0,
    xsrfCookieName: 'XSRF-TOKEN',
    xsrfHeaderName: 'X-XSRF-TOKEN',
    maxContentLength: -1,
    maxBodyLength: -1,
    validateStatus: [Function: validateStatus],
    headers: {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/json',
      'User-Agent': 'OpenAI/NodeJS/3.3.0',
      Authorization: 'Bearer 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',
      'Content-Length': 55
    },
    method: 'post',
    data: '{"n":1,"size":"1024x1024","response_format":"b64_json"}',
    url: 'https://api.openai.com/v1/images/generations'
  },

排查方向及解决方法

从错误日志的data字段能看到,发给OpenAI的请求缺少prompt参数,这是400错误的核心原因,按以下步骤排查:

  • 确保Express解析JSON请求体:在你的主服务文件(如server.js)中添加express.json()中间件,否则后端无法解析前端传来的JSON格式请求体,req.body.prompt会是undefined:
    app.use(express.json());
    
  • 验证prompt参数是否正常接收:在后端POST接口中添加日志,确认是否获取到前端传来的prompt:
    console.log('Received prompt:', prompt);
    
  • 检查API密钥权限:确认你的OpenAI API密钥有调用images/generations接口的权限,账户是否有可用余额,无访问限制。可以用Postman直接调用OpenAI API测试密钥有效性。
  • 验证prompt合规性:OpenAI会拒绝违反内容政策的prompt,若prompt包含违规内容也会返回400错误,先用简单合规的prompt(如"a cute cat sitting on a windowsill")测试。
  • 更新OpenAI包版本:当前使用的openai包为3.3.0版本,尝试更新到最新稳定版,避免版本兼容性问题:
    npm update openai
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:44:59