javascript - 无法读取未定义的属性 'send'

标签 javascript node.js express

我正在尝试从外部脚本向路由器发送数据,但它返回错误 TypeError: Cannot read property 'send' of undefined

这是代码

app.js

var Cake = require('./modules/cake');

router.get('/cakes', function(req, res) {
  Cake.getCake();
})

cake.js

module.exports = {
  getCake: function (req, res) {
    request({
      url: "http://get.cakes/json",
      json: true
    }, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        res.send(body);
      }
    });
  }
};

请注意,http://get.cake/ 不是真实站点。这与问题无关。

最佳答案

您没有将 reqres 传递给 getCake

router.get('/cakes', function(req, res) {
  Cake.getCake(); // <-- you're passing nothing here so `res` is undefined within `getCake` and so you're calling `undefined.send()`
})

你应该:

router.get('/cakes', function(req, res) {
  Cake.getCake(req, res); // <-- pass `req` and `res` down to `getCake`
})

甚至速记:

router.get('/cakes', Cake.getCake);

关于javascript - 无法读取未定义的属性 'send',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41134428/

相关文章:

javascript - 无法访问 Angular 应用程序注入(inject)的 div 元素

JavaScript 字符串替换函数

node.js - db.collectionNames 在 Node.js 中不起作用

node.js - 如何在node.js中运行两个程序

javascript - Node.js 中的 fs readFile 代码不知何故崩溃了

javascript - 根据浏览器重定向到特定页面

javascript - Immutable.js 是如何省略 new 关键字的?

html - 使用 express.js 渲染 html,但 html 无法获取 JS 文件

node.js - 使用 Apollo 进行服务器端渲染 : getaddrinfo ENOTFOUND

node.js - 同步调用和异步合并主体结果