2017-02-18 4 views
0

(私はJS、node.js、Herokuを初めて使っていますので、質問がクリアであることを願っています) 私はHeroku node.jsアプリケーションを持っています。 1時間ごとにタスクを実行します。スケジューリングされたジョブからの投稿要求が機能していません

タスクは時間通りに実行され、fireHook()というメソッドが呼び出されます(コンソールにログが表示されます)が、要求が機能しません(loまたはエラーが発生しません)。

これは仕事です:

#!/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. 私は現在メインアプリを呼び出すためにウェブフックを使用していますが、スクリプトから直接メインアプリで関数を呼び出す方がいいですか?

おかげ

答えて

0

は、私は、要求がその応答を受信した前に、あなたの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()を起動する必要があります。

関連する問題