簡體   English   中英

節點js:無法讀取未定義的屬性“文本”

[英]node js:Cannot read property 'text' of undefined

我正在用node js express構建一個Messenger機器人。我正在嘗試將index.js文件拆分為兩個文件。 這是msg.js的代碼,它是新文件

'const
  express = require('express'),
  bodyParser = require('body-parser'),
  request = require('request'),
  PAGE_ACCESS_TOKEN ="",
  app = express().use(bodyParser.json());
//functions
module.exports = {
//hangles messages
 handleMessage:function (sender_psid, received_message) {
  let response;

  // Checks if the message contains text
  if (received_message.text) {
    // Create the payload for a basic text message, which
    // will be added to the body of our request to the Send API
    response = {
      "text": `You sent the message: "${received_message.text}". Now send me an attachment!`
    }
  } else if (received_message.attachments) {
    // Get the URL of the message attachment
    let attachment_url = received_message.attachments[0].payload.url;
    response = {
      "attachment": {
        "type": "template",
        "payload": {
          "template_type": "generic",
          "elements": [{
            "title": "Is this the right picture?",
            "subtitle": "Tap a button to answer.",
            "image_url": attachment_url,
            "buttons": [
              {
                "type": "postback",
                "title": "Yes!",
                "payload": "yes",
              },
              {
                "type": "postback",
                "title": "No!",
                "payload": "no",
              }
            ],
          }]
        }
      }
    }
  }

  // Send the response message
  module.exports.callSendAPI(sender_psid, response);
},

// Handles messaging_postbacks events
  handlePostback:function (sender_psid, received_postback) {
  let response;
  // Get the payload for the postback
  if (received_postback) {
    let payload = received_postback.payload;
  }
  // Send the message to acknowledge the postback
  module.exports.callSendAPI(sender_psid, response);
},

  // Sends response messages via the Send API
callSendAPI:function (sender_psid, response) {
  // Construct the message body
  let request_body = {
    "recipient": {
      "id": sender_psid
    },
    "message": response
  }

  // Send the HTTP request to the Messenger Platform
  request({
    "uri": "https://graph.facebook.com/v2.6/me/messages",
    "qs": { "access_token": PAGE_ACCESS_TOKEN },
    "method": "POST",
    "json": request_body
  }, (err, res, body) => {
    if (!err) {
      console.log('message sent!')
    } else {
      console.error("Unable to send message:" + err);
    }
  });
  }
};

我的index.js文件底部有以下代碼。

//Imports functions from other files
let  msg = require('./msg.js'),
     handleMessage = msg.handleMessage(),
     handlePostback = msg.handlePostback(),
     callSendAPI = msg.callSendAPI();

我收到以下錯誤:

msg.js:14如果(received_message.text){^

TypeError:無法讀取未定義的屬性“文本”

問題是這一行:

if (received_message.text) {

當這個被調用, received_message這是在傳遞是不確定的,所以當你嘗試獲取text從外地received_message變量,因為它會引發錯誤received_message是不確定的,因此不會有,你可以從它調用任何領域。 在傳遞給handleMessage函數之前,請檢查是否已正確設置了received_message。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM