POST请求不工作
问题描述:
(我是新来的JS,Node.js和受Heroku的,所以我希望这个问题是清楚的) 我有一个Heroku的Node.js的应用程序,我能Heroku的调度成立每1小时运行一次任务。POST请求不工作
该任务按时运行,并调用方法fireHook()
(我可以在控制台中看到日志),但请求不起作用(我没有收到任何错误或错误)。
这是工作:
#!/usr/bin/env node
var request = require('request')
function fireHook(){
console.log("firing")
request({
url: 'https://XXXXXX.herokuapp.com/jobs',
method: "POST",
headers: { "content-type": "application/json" },
json: {"user_id":{ "id":"ddddd"}}
}, function(error, response, body) {
console.log(response)
if (error) {
console.log('Error sending messages: ', error)
} else if (response.body.error) {
console.log('Error: ', response.body.error)
} else {
console.log('success: ', body)
reportToSnitch()
}
})
}
fireHook();
process.exit();
2个问题:
- 为什么销售的要求不工作?
- 我目前使用webhook来调用我的主应用程序,有没有更好的方法直接从脚本调用主应用程序的功能?
感谢
答
我想请求已收到其响应之前你process.exit()
是杀你的脚本。尝试将它移动到回调:
#!/usr/bin/env node
var request = require('request')
function fireHook(){
console.log("firing")
request({
url: 'https://XXXXXX.herokuapp.com/jobs',
method: "POST",
headers: { "content-type": "application/json" },
json: {"user_id":{ "id":"ddddd"}}
}, function(error, response, body) {
console.log(response)
if (error) {
console.log('Error sending messages: ', error)
} else if (response.body.error) {
console.log('Error: ', response.body.error)
} else {
console.log('success: ', body)
reportToSnitch()
}
process.exit();
})
}
fireHook();
JavaScript是异步的,所以你必须要小心考虑在哪里以及何时某些事件将会发生。如果您的reportToSnitch()
函数也是异步函数,则可能需要在该函数结束时触发process.exit()
。