如何使用nodejs http修复“'listener'参数必须是一个函数”

时间:2019-08-06 17:25:38

标签: javascript node.js https

我无法在我的代码中更正此错误,该代码在本地环境下运行良好,但始终返回此错误:代码进入我的“ http.get”调用后,““ listener”参数必须是一个函数“ 。在两种环境中,Nodejs版本完全相同,而令人困扰的是axios的get可以工作,并且标头和参数相同。不幸的是,我无法使用axios,因为它会截断我将要收到的非常重要的十六进制数据,以响应此请求。

我尝试以更经典的风格编写该函数,但出现了相同的错误。

const http = require('https');
const querystring = require('querystring');
const tokenData = require('../config/token');


const apiDL = {
    baseURL: process.env.DOWNLOAD_API,
    headers : {
        //"Content-Type" : "application/x-www-form-urlencoded",
        "Authorization" :""}

    };

 const singleDownload = (req, res) => {
     //truncating my code to arrive to the problematic part
                        let h = apiDL.headers;
                        h.Authorization = token;
                        let p = params;

                            http.get( apiDL.baseURL,{ path :'/download?' + q, headers : h}, (resp) => {

                                const { statusCode } = resp;
                                const contentType = resp.headers['content-type'];
                                const contentDisp = resp.headers['content-disposition'];

//some other code irrelevant to the problem since the bug occurs when the http.get is called
                            }
                            ).on('error', (e) => {
                                console.error(`Got error: ${e.message}`);
                                er +=e.message;
                              }
                            );

 }





 module.exports = {singleDownload}

我不明白为什么在此环境中会发生此错误,而本地没有相同的参数。我将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果将来对任何人有帮助:文档会指定这样的呼叫是可能的:

https.get(url,options,callback);

就我而言,我仍然不知道为什么,它只接受了这种呼叫:

https.get(options,callback);