NodeJS ReferenceError:请求未定义

eqzww0vc  于 11个月前  发布在  Node.js
关注(0)|答案(4)|浏览(148)

我试图复制一个facebook messenger bot,但不断得到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) {..}

[...]


我是不是错过了什么快递?谢谢

sz81bmfz

sz81bmfz1#

这个例子使用了third-party Request module
如果你愿意,你也可以像这样使用原生请求:require('http').request(),但我想说,request 模块非常常见,是一个很好的工具。
你的request,被注解掉了,指向express.request。如果像request()一样使用,会抛出错误,因为它不是一个函数。所以,你应该真正使用Request模块,或者调整代码以使用原生http.request

更新2020

request模块现在已经过时了,所以如果你正在阅读这个答案,请使用本机模块或找到一个流行的第三方库,如Axios或其他。

x7yiwoj4

x7yiwoj42#

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

ki1q1bka

ki1q1bka3#

我得到了同样的错误,但在一个不同的上下文比你的;当我试图导入

import { Request } from 'express'

export class UserRequest extends Request {
  user: UserEntity;
}

字符串
这个问题是由于使用class而不是interface引起的

lg40wkob

lg40wkob4#

至于我,当我克隆一个使用另一个节点版本(特别是v18.17.1)的repo时,我得到了同样的错误,我将我的节点版本从v16...更改为v18.18.1,它工作了。

相关问题