ReferenceError:未定义请求

Syl*_*lar 8 node.js express

我试图复制一个Facebook messenger机器人,但继续得到request is not defined.

与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);
    }
  });  
}
Run Code Online (Sandbox Code Playgroud)

我的节点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) {..}

[...]
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了快递?谢谢

hlf*_*rmn 8

这个例子使用了第三方请求模块

您也可以像这样使用本机请求require('http').request(),如果您愿意,但我想说的是,请求模块非常常见,并且是一个很好的工具。

您的request被注释掉,指向express.request。如果使用 likerequest()会抛出错误,因为它不是一个函数。因此,您应该真正使用 Request 模块,或者调整代码以使用 native http.request

2020 年更新

现在不推荐使用请求模块,因此如果您正在阅读此答案,请使用本机模块或查找流行的第三方库,如 Axios 或其他。


Ash*_*war 7

您还没有安装request模块。

首先安装它npm install --save request,然后包含var request = require('request');