1. ホーム
  2. node.js

[解決済み] ReferenceError: リクエストが定義されていません。

2022-02-09 07:09:43

質問

を再現しようとしています。 フェイスブックメッセンジャーボット が表示され続けます。 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);
    }
  });  
}

私のノード 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) {..}

[...]

エクスプレスで何か見落としているのでしょうか?ありがとうございます。

解決方法は?

この例では サードパーティリクエストモジュール .

を使用することもできます。 ネイティブリクエスト というように require('http').request() を使用することも可能です。 リクエスト モジュールは非常に一般的で、使い勝手の良いツールです。

あなたの request を指しており、これはコメントアウトされています。 express.request . のように使用すると request() は関数ではないので、エラーを投げます。ですから、本当は Request モジュールを使うか、ネイティブの http.request .

2020年のアップデート

リクエストモジュールは現在非推奨なので、この回答を読んでいる方は、ネイティブモジュールを使うか、Axiosなどの人気のあるサードパーティライブラリを探してみてください。