我在尝试执行 request.post
时收到以下错误。这很令人困惑,因为它似乎首先引用了我的选项的 body
,但随后提示第一个参数应该是字符串或缓冲区。
{ 代码:未定义,原因:'参数错误,options.body。' }
卫生部!
_http_outgoing.js:454
throw new TypeError('第一个参数必须是字符串或缓冲区');
^
类型错误:第一个参数必须是字符串或缓冲区
我尝试将 url
值更改为字符串,但这并不能解决问题。
这是我的代码的样子。正如您所看到的,我已经注销了 reqOptions
并验证了该 url 确实已传递给 request.post
,所以我不确定问题是什么。为任何帮助干杯!
var reqOptions = {
url: options.host,
body: formData,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
console.log('CHECK OPTIONS :: ', reqOptions);
request.post(reqOptions, function (err, resp) {...}
最佳答案
如果 formData
是一个对象,您可能需要使用 request
的 form:
option而不是body:
。这将字符串化对象并设置 Content-Type
header 。
var reqOptions = {
url: options.host,
form: formData
};
console.log('CHECK OPTIONS :: ', reqOptions);
request.post(reqOptions, function (err, resp) {...});
<小时/>
body:
选项需要一个字符串、Buffer 或 ReadStream 值。如果不使用 form:
,您就必须自己对对象进行字符串化。
var qs = require('querystring');
var reqOptions = {
url: options.host,
form: qs.stringify(formData),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
关于javascript - Node 中的 request.post 抛出 { code : undefined, Reason: 'Argument error, options.body.' },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594055/