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个问题:

  1. 为什么销售的要求不工作?
  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()