使用请求模块的Node.JS代理

杰加德什

我有一个Express.JS应用程序,该应用程序使用请求节点模块对路由进行代理调用。在NodeJS V0.10.28上运行良好。但是,升级到NodeJS V4.4.7导致失败—引发错误“错误:结束后写入”。

我是NodeJS的新手。非常感谢您的帮助。

var bodyParser=require('body-Parser');
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({extended: false}));

....
....

app.use('/relay', function (req, res) {
        var request = require('request'),
            proxyUrl = 'http://abc.proxy.xyz:12345',
            apiEndPoint = "https://aaa.bbb.ccc/svc";

        req.pipe(request.post(apiEndPoint,{ proxy: proxyUrl, form: req.body}, function (error, response, body) {

            if (error) {
                console.log(error)
            } else {
                console.log("No error here.")
            }

            res.end();

        })).pipe(res);   
});
杰加德什

为了后代,这是我的解决方案,以防其他人遇到同样的问题。

问题出在使用中间件body-parser:body-parser读取请求以完成操作-因此流已到达末尾。因此,问题中显示的/ relay路由中的req.pipe()没有任何要读取的内容,并且不会重新启动流。

但是,返回的错误消息“ end after after”非常模棱两可。为什么我没有遇到Node.JS V0.10.28这个问题也是一个谜。在V4.4.7中注意到了所报告的问题

因此,要解决body-parser问题,我将/ relay路由移到了对body-parser的调用之上:

app.use('/relay', function (req, res) {
        var request = require('request'),
            proxyUrl = 'http://abc.proxy.xyz:12345',
            apiEndPoint = "https://aaa.bbb.ccc/svc";

        req.pipe(request.post(apiEndPoint,{ proxy: proxyUrl, form: req.body}, function (error, response, body) {

            if (error) {
                console.log(error)
            } else {
                console.log("No error here.")
            }

            res.end();

        })).pipe(res);   
});

....
....

var bodyParser=require('body-Parser');
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({extended: false}));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用请求模块抓取Node.js

来自分类Dev

如何在Node.js Lambda中使用请求模块

来自分类Dev

带有模块请求的node.js中的代理身份验证

来自分类Dev

代理选项在Node.js的请求模块中不起作用

来自分类Dev

无法使用node.js和“请求”模块向UTF-8链接发出请求

来自分类Dev

如何使用请求模块 -Node js 提取来自 url 的请求的域名

来自分类Dev

使用Apache代理的Node.js路由

来自分类Dev

Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

来自分类Dev

Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

来自分类Dev

Node.js-带“请求”模块的PUT

来自分类Dev

node.js 通过请求模块发送

来自分类Dev

Node.js Express-代理请求后调用next()

来自分类Dev

Node.js 的代理请求:net::ERR_EMPTY_RESPONSE

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

Node JS TCP代理:使用Node JS设置HTTP隧道

来自分类Dev

如何在node.js上使用请求模块设置POST编码?

来自分类Dev

node.js:使用请求模块进行表单HTTP身份验证失败

来自分类Dev

我如何使用Node.js请求模块进行curl调用

来自分类Dev

无法使用Node.js中的请求模块传输大文件

来自分类Dev

Express.js代理发布请求

来自分类Dev

node.js请求模块,如何使用步骤将请求的URL主体传递给下一个函数

来自分类Dev

有关使用Node.js“代理”服务器代理CSS和JS的建议

来自分类Dev

IIS反向代理到node.js

来自分类Dev

AngularJS + ServiceStack + Node.js作为代理?

来自分类Dev

node.js http代理重定向

来自分类Dev

带有https的Node.js代理

来自分类Dev

从Node.js中的地址设置代理

来自分类Dev

使用Nginx代理在node.js应用上启用Cors

来自分类Dev

使用代理在VM中安装node.js

Related 相关文章

  1. 1

    使用请求模块抓取Node.js

  2. 2

    如何在Node.js Lambda中使用请求模块

  3. 3

    带有模块请求的node.js中的代理身份验证

  4. 4

    代理选项在Node.js的请求模块中不起作用

  5. 5

    无法使用node.js和“请求”模块向UTF-8链接发出请求

  6. 6

    如何使用请求模块 -Node js 提取来自 url 的请求的域名

  7. 7

    使用Apache代理的Node.js路由

  8. 8

    Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

  9. 9

    Node.js请求模块....在主体中发送JSON以使用api请求进行API请求

  10. 10

    Node.js-带“请求”模块的PUT

  11. 11

    node.js 通过请求模块发送

  12. 12

    Node.js Express-代理请求后调用next()

  13. 13

    Node.js 的代理请求:net::ERR_EMPTY_RESPONSE

  14. 14

    Node JS TCP代理:使用Node JS设置HTTP隧道

  15. 15

    Node JS TCP代理:使用Node JS设置HTTP隧道

  16. 16

    如何在node.js上使用请求模块设置POST编码?

  17. 17

    node.js:使用请求模块进行表单HTTP身份验证失败

  18. 18

    我如何使用Node.js请求模块进行curl调用

  19. 19

    无法使用Node.js中的请求模块传输大文件

  20. 20

    Express.js代理发布请求

  21. 21

    node.js请求模块,如何使用步骤将请求的URL主体传递给下一个函数

  22. 22

    有关使用Node.js“代理”服务器代理CSS和JS的建议

  23. 23

    IIS反向代理到node.js

  24. 24

    AngularJS + ServiceStack + Node.js作为代理?

  25. 25

    node.js http代理重定向

  26. 26

    带有https的Node.js代理

  27. 27

    从Node.js中的地址设置代理

  28. 28

    使用Nginx代理在node.js应用上启用Cors

  29. 29

    使用代理在VM中安装node.js

热门标签

归档