Javascript ExpressJS响应中间件

Javascript ExpressJS响应中间件,javascript,node.js,express,Javascript,Node.js,Express,我为前端制作了一个HttpInterceptor,用于发送带有一些默认头的每个请求,并为每个请求自动加密body/url,为后端制作了一个中间件,用于检查头并在需要时解密数据包。。现在我遇到了响应中间件的一个问题,因为我只想为一些请求发送带有加密体的响应 app.use((req,res,next)=>{ if(req.headers['x-data-encoded'] && (req.headers['x-server'] == "HP")){

我为前端制作了一个HttpInterceptor,用于发送带有一些默认头的每个请求,并为每个请求自动加密body/url,为后端制作了一个中间件,用于检查头并在需要时解密数据包。。现在我遇到了响应中间件的一个问题,因为我只想为一些请求发送带有加密体的响应

app.use((req,res,next)=>{

    if(req.headers['x-data-encoded'] && (req.headers['x-server'] == "HP")){

        res.append('X-Encoded-Data', true);

        var nsp = res.send;

        res.send = function(data){
            var body = Crypto.encodeData(data); // Result a string of letters and numbers
            nsp.apply(this, body);
        }

    }

    next();
});

捕获到异常:TypeError:CreateListFromArrayLike在非对象上调用

我认为出现此错误是因为send方法等待一个对象,并且它正在接收字符串。如果手动指定一个对象,此错误将消失或更改为另一个

此外,apply的第二个参数应该是数组


希望有帮助

此错误在哪里抛出?看起来它不在您显示的代码中。它没有显示行,但是如果我对'nsp'和'res.send'函数进行注释,它就可以正常工作
nsp.apply(这个,{packet:body})不会引发错误,但请求没有可用的响应数据。apply的第二个参数应该是数组。可能就是因为这个,谢谢你!模块现在运行良好<代码>.apply(此[正文])