2017-02-20 74 views
4

我試圖複製一個facebook messenger bot但保持request is not definedReferenceError:請求未定義

相同的代碼,如Facebook:

function callSendAPI(messageData) { 
    request({ 
    uri: 'https://graph.facebook.com/v2.6/me/messages', 
    qs: { access_token: PAGE_ACCESS_TOKEN }, 
    method: 'POST', 
    json: messageData 

    }, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var recipientId = body.recipient_id; 
     var messageId = body.message_id; 

     console.log("Successfully sent generic message with id %s to recipient %s", 
     messageId, recipientId); 
    } else { 
     console.error("Unable to send message."); 
     console.error(response); 
     console.error(error); 
    } 
    }); 
} 

我的節點server.js看起來是這樣的:

const express = require('express'); 
const bodyParser = require('body-parser'); 
//const request = express.request; 
const PAGE_ACCESS_TOKEN = 'abc'; 

let app = express(); 

app.use(bodyParser.urlencoded({ extended: false })); 

// parse application/json 
app.use(bodyParser.json()); 

[...] 

function sendTextMessage(recipientId, messageText) { 
    var messageData = { 
    recipient: { 
     id: recipientId 
    }, 
    message: { 
     text: messageText 
    } 
    }; 

    callSendAPI(messageData); 
} 

function callSendAPI(messageData) {..} 

[...] 

我失去了與表達些什麼?謝謝

+0

'const request = require('request')' – hlfrmn

回答

1

這個例子是利用third-party Request module

您也可以使用native request像這樣:require('http').request(),如果你想,但我要說的是,要求模塊是很常見的,和一個很好的工具來使用。

編輯 其實,我只是注意到你在你的代碼中有它,但它被註釋掉了! 經過較長時間的窺視之後,您的註釋掉request指向express.request,如果使用像request()那樣會出現錯誤,因爲它不是函數。所以,你應該真的使用請求模塊,或調整代碼使用本地http.request

+0

是的,我確實得到請求不是函數。謝謝 – Sylar