gpt4 book ai didi

node.js - 当对 multipart/form-data 使用 request 和 multiparty 时,出现错误 : uncaughtException: source. 不是一个函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:15 24 4
gpt4 key购买 nike

我正在尝试将数据从我的 Node 应用程序发送到第 3 方 HTTP 端点。

我正在使用多方模块解析来自客户端的请求对象上的数据,并通过请求模块发送数据。我收到错误

错误:uncaughtException:source.on 不是函数

var request = require('request');
const multiparty = require('multiparty');

function addAttachment(req, res) {
let form = new multiparty.Form();
let parsedFile = {};
const formData = {};
form.parse(req, function(err, fields, files){
Object.keys(fields).forEach(function(name) {
formData[name] = fields[name][0];
});

Object.keys(files).forEach(function(name) {
logger.debug(name);
parsedFile[name] = files[name][0];
});
formData.uploadFile = parsedFile.uploadFile;
logger.debug('formData ', formData);

reqOptions.url = imageURL;
reqOptions.formData = formData;

logger.debug('REQ_OPTIONS ', reqOptions);

request.post(reqOptions, function (err, response, body) {
if (err) {
logger.warn(req, ' Error sending attachment', err);
res.status(400);
res.json({ "msg": "Error sending attachment" });
} else {
res.status(201);
logger.debug('BODY ', body);
res.send(body);
}
});
});
}

reqOptions obj 包含 headers、url、auth obj,然后我们向其中添加表单数据。

当我记录表单数据时,它看起来格式正确

{
"meta": {
"prop1": "xxxxxx",
"prop2": "xxxxxxxxxxxxx",
"uploadFile": {
"fieldName": "uploadFile",
"originalFilename": "test.PNG",
"path": "/tmp/W1IppPiK04JpkPrnZWEhzkmV.PNG",
"headers": {
"content-disposition": "form-data; name=\"uploadFile\"; filename=\"test.PNG\"",
"content-type": "image/png"
},
"size": 42786
}
}

}

最佳答案

此错误可能是错误消息完全误导的最佳示例之一。所以。对这个问题进行 RCA 非常令人沮丧:

ERROR: uncaught Exception: source.on is not a function

实际上这里没有任何函数的内容。就我而言,我花了几个小时摸不着头脑,最后才发现它是另一个 JSON 下的 JSON,这导致了此错误:

  let subJson = 
{
field1: "value1",
field2: "value2"
}

let myJson =
{
field1: "value1",
field2: "value2",
field3: subJson
}

createFormData(myJson);

就是这个了!当您以 myJson 作为参数调用 createFormData 时,您将看到异常 source.on is not a function!我们一直在想这个功能在哪里?

解决方案是JSON.stringify

   field3: JSON.stringify(subJson)

将解决这个问题。

JavaScript!

关于node.js - 当对 multipart/form-data 使用 request 和 multiparty 时,出现错误 : uncaughtException: source. 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com