代码在20天之前工作正常,现在我正在尝试运行相同的代码,但它不再起作用(甚至没有显示任何错误)。
var request = require("request");
var dataToSend = {
key: "value",
key1: "value1"
};
request.post({
url: 'http://localhost:9092/services/reports/generateReport',
form: dataToSend
}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
})
.on('response', function (response) {
console.log('success log');
res.download('public/uploads/report.pdf');
})
.on('error', function (response) {
console.log('Error downloading report file');
})
.pipe(fs.createWriteStream('public/uploads/report.pdf'));
输出始终是“成功日志”。即使我写了一些随机URL,它也会显示“成功日志”
Web服务工作正常,我已经使用外部REST客户端验证了它。
问题在于:
1)它不关心我写的是什么网址,会在不给出任何“错误”的情况下进入“响应”部分。
2)如何调试呢?没有显示任何错误注意:最近请求模块中有更新,这可能是个问题吗?
我正准备在生产中推送此代码,并在运行npm install时出错。请帮助我,我不想转移到另一个休息的HTTP客户端。
node v4.4.5
npm v3.10.8
request v2.75.0
答案 0 :(得分:0)
传递回调时,您不需要定义事件处理程序。代码可以重构为:
request.post({
url: 'http://localhost:9092/services/reports/generateReport',
form: dataToSend
}, function optionalCallback(err, httpResponse, body) {
if (err) {
console.error('upload failed:', err);
return res.status(500);
}
//
// TODO: Check if the HTTP status code fits your expectations:
//
// if (httpResponse.status !== 201) {
// return res.status(500);
// }
//
res.download('public/uploads/report.pdf');
});
希望有所帮助:)
答案 1 :(得分:0)
您应该尝试其他一些request.post()样式。这可以解决您阅读网址时遇到的问题。
request.post('http://service.com/upload', {form:{key:'value'}})
// or
request.post('http://service.com/upload').form({key:'value'})
// or
request.post({url:'http://service.com/upload', form: {key:'value'}}, function(err,httpResponse,body){ /* ... */ })
您通过" response.request"将您的请求发送到服务器。你可以在那里看到接收主机。
答案 2 :(得分:0)
如果您因为最近的request
模块更新而认为它已损坏,那么您可以回滚到request
模块的旧版本,一切都应该没问题,并开始像以前一样工作。
例如
您的软件包在github上托管:
https://github.com/request/request
具体版本是:
v2.75.0
然后你可以在package.json
(如果你使用的是package.json)或你提到request
模块的其他地方
https://github.com/request/request#v2.75.0
希望,这有助于你