【问题标题】:Error: Route.post() requires callback functions but got a [object Undefined] at Route.(anonymous function) [as post]错误:Route.post() 需要回调函数,但在 Route.(匿名函数) [as post] 处得到了 [object Undefined]
【发布时间】:2016-06-22 14:29:29
【问题描述】:

我正在尝试确认用户是否具有管理员权限。当我从路由器调用verifyAdminUser 函数时,我收到此错误:

错误:Route.post() 需要回调函数,但在 Route.(匿名函数) [as post] 处得到了 [object Undefined]

这是我的路由器文件中的呼叫

.post(Verify.verifyAdminUser, function (req, res, next) {})

还有我的验证功能

verifyAdminUser = function (req, res, next) {}

谁能帮我解决这个问题?我读过很多类似的问题,但没有一个有帮助。

【问题讨论】:

  • 这是我的功能:
  • exports.verifyAdminUser = function (req, res, next) { if(req.decoded._doc.admin != 'true'){ var err = new Error('你不是管理员用户!');错误状态= 401;返回下一个(错误); } 其他 { 返回下一个(); } };

标签: javascript node.js express


【解决方案1】:

确保 Verify.verifyAdminUser 已声明且 !== void 0

Express 这样做,handlepost() 的每个参数:

 if (typeof handle !== 'function') {
    var type = toString.call(handle);
    var msg = 'Route.' + method + '() requires callback functions but got a ' + type;
    throw new Error(msg);
  }

【讨论】:

  • 好的,我的验证文件中有以下功能正在工作,但是一旦我更改名称,我就会收到一个错误,说它不是函数而是对象。作品:exports.verifyOrdinaryUser = function (req, res, next) {} };不起作用:exports.verifyAdminUser = function (req, res, next) {} };
  • 这很奇怪!!你有要点吗?
【解决方案2】:

好吧,我解决了这个问题。我的 require 语句没有指向正确的路径

var Verify = require('../verify');

但这并不能告诉我为什么它会起作用

.post(Verify.verifyOrdinaryUser, function (req, res, next) {}

但不是这个

.post(Verify.verifyOrdinaryUser, Verify.verifyAdminUser, function (req, res, next) {}

当两个函数在同一个文件中时

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2020-06-29
    相关资源
    最近更新 更多