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

无法通过Node.js获取Python脚本输出的技术求助

解决Node.js中间层调用Python接口返回结果异常的问题

我看了你的代码,问题主要出在请求参数传递和响应数据处理这两个核心点上,咱们一步步来修复:

1. 错误传递了整个Request对象给Python接口

你在app.js里调用usecaseWorkflow.fetchUsecaseWorkflow(req)时,把整个Express的req对象传了过去,但Python接口需要的是请求体里的业务数据(也就是req.body),不是包含一堆框架属性的Request对象。这会导致Python接口收到的参数完全不符合预期,自然返回不了正确结果。

修改app.js里的调用代码:

router.post('/usecase-workflow', async (req, res) => {
  try{
    // 传递req.body而非整个req对象
    let responseUsecase = await usecaseWorkflow.fetchUsecaseWorkflow(req.body);
    res.send(responseUsecase);
  }catch(error) {
    responseObj = {
      status: 'error',
      msg: 'Error occurred while downloading ubot file',
      body: error.message || error
    }
    res.send(responseObj);
  }
})

2. 返回了Axios的完整响应对象而非实际数据

Axios的响应结果response包含了很多元数据(比如状态码、响应头、配置信息等),而你直接把整个response返回给前端了,这和你直接调用Python接口得到的纯业务数据不一样。你需要提取response.data才是Python接口返回的实际内容。

同时要完善错误处理:在fetchUsecaseWorkflow的catch块里,要把错误抛出去,让上层的try/catch能捕获并返回错误响应,不然接口会返回undefined。

修改usecaseWorkflow.js的代码:

const mongoose = require('mongoose');
const axios = require('axios');
const request = require('request');

class DefineUseCase {
  fetchUsecaseWorkflow = async(requestBody) => {
    try{
      // 明确指定Content-Type,确保请求格式和Postman调用一致
      const response = await axios.post('http://127.0.0.1:5005/usecase-workflow', requestBody, {
        headers: {
          'Content-Type': 'application/json'
        }
      });
      // 只返回Python接口的实际响应数据
      return response.data;
    }catch(error) {
      console.log(error);
      // 抛出错误,让上层处理
      throw error;
    }
  }
}

module.exports = new DefineUseCase();

额外验证点

如果还是有问题,可以检查:

  • 确认Node.js服务已经正确配置了express.json()中间件,这样req.body才能被正确解析为JSON对象
  • 对比Postman调用Python接口时的请求头,确保axios发送的请求头和它一致(比如Content-Type、其他自定义头)

这样修改后,你的Node.js接口应该就能返回和直接调用Python接口完全一致的结果了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 14:42:44