我无法在我的代码中更正此错误,该代码在本地环境下运行良好,但始终返回此错误:代码进入我的“ 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}
我不明白为什么在此环境中会发生此错误,而本地没有相同的参数。我将不胜感激。
答案 0 :(得分:0)
如果将来对任何人有帮助:文档会指定这样的呼叫是可能的:
https.get(url,options,callback);
就我而言,我仍然不知道为什么,它只接受了这种呼叫:
https.get(options,callback);