Javascript 如何使用node.js请求模块发送文件?

Javascript 如何使用node.js请求模块发送文件?,javascript,node.js,request,form-data,Javascript,Node.js,Request,Form Data,我正在尝试使用API使用node.js更新另一台服务器上的列表。最后一步,我需要发送一篇包含csv文件的帖子。在API中,他们在FormData下列出我需要一个名为file的键和一个二进制Upload的值,然后请求的主体应该是listname:name和file:FileUpload function addList(token, path, callback) { //Define FormData and fs var FormData = require('form-data'); va

我正在尝试使用API使用node.js更新另一台服务器上的列表。最后一步,我需要发送一篇包含csv文件的帖子。在API中,他们在FormData下列出我需要一个名为file的键和一个二进制Upload的值,然后请求的主体应该是listname:name和file:FileUpload

function addList(token, path, callback) {

//Define FormData and fs
var FormData = require('form-data');
var fs = require('fs');

//Define request headers.
headers = {
    'X-Gatekeeper-SessionToken': token,
    'Accept': 'application/json',
    'Content-Type': 'multipart/form-data'
};

//Build request.
options = {
    method: 'POST',
    uri: '{URL given by API}',
    json: true,
    headers: headers
};

//Make http request.
req(
    options,
    function (error, response, body) {
        //Error handling.
        if (error) { callback(new Error('Something bad happened')); }

        json = JSON.parse(JSON.stringify(response));
        callback.call(json);
    }
);

//Attempt to create form and send through request
var form = new FormData();
form.append('listname', 'TEST LIST');
form.append('file', fs.createReadStream(path, { encoding: 'binary' }));
form.pipe(req);};
我是html和css前端javascript的老手,但这是我第一次使用backend node.js。我经常遇到的错误是:
TypeError:dest.on不是一个函数

据我所知,这与我使用
form.pipe(req)
的方式有关,但我找不到告诉我正确用法的文档。如果你没有一个直接的答案,一个手指指向正确的文档将不胜感激

这一行:

.pipe(fileinclude)
应该是这样的:

.pipe(fileinclude())


问题在于您没有将请求实例传递到管道调用中,而是传递了请求模块本身。引用您的
req(…)
调用的返回值,并传递它

//Make http request.
const reqInst = req(
   options,
   function (error, response, body) {
       //Error handling.
       if (error) { callback(new Error('Something bad happened')); }

       json = JSON.parse(JSON.stringify(response));
       callback.call(json);
   }
);

//Attempt to create form and send through request
var form = new FormData();
...
form.pipe(reqInst);

OP没有使用gulp,因此
fileinclude
中间件甚至不在考虑范围之内。