【问题标题】:How to call a function from a exported module in node.js?如何从 node.js 中的导出模块调用函数?
【发布时间】:2015-11-12 12:23:22
【问题描述】:

我在 passport.js 文件中定义了一个名为 issueToken(user, done) 的函数。 在 server.js 我有以下代码:

require('./config/passport')(passport);
require('./app/routes.js')(app, passport);

在 routes.js 中,我正在尝试调用 issueToken 函数:

module.exports = function(app, passport) {
   ...
   passport.issueToken(req.user, function(err, token) {
   ...
   }
}

但它似乎不是正确的函数调用,因为它返回以下错误: TypeError: undefined is not a function at Object.handle (/home/octavian/Desktop/node/login2/app/routes.js:54:12)(包含上述 issueToken 函数调用的行)。

关于我尝试拨打的电话的正确语法是什么的任何线索?

谢谢

【问题讨论】:

  • 你确定是issueToken 而不是issuedToken
  • 是否应该将 require 定义为 var? var passport = require('./config/passport')(passport);

标签: javascript node.js


【解决方案1】:

有无数种方法可以从 Node 模块中导出内容,但这超出了您的问题范围。您使用的模式完全没问题。

你真正的问题不是模块本身的导出模式或server.js中的调用模式,而是你的对象passport作为参数传递没有issueToken 方法,因此您应该调试并弄清楚发生了什么。

【讨论】:

  • 它应该有那个方法,因为我已经在passport.js中定义了它。
  • 尝试调试护照对象的原型,我相信你会发现它不存在:) 你可以使用下划线列出对象上的函数_.functions(passport)
  • 我正在尝试按您所说的进行调试,但我无法列出函数.....在节点调试控制台中我应该在哪里输入 _.functions(passport)?
  • 您需要使用下划线库才能做到这一点,或者在这里查看一些替代方案:stackoverflow.com/questions/4352997/…
猜你喜欢
  • 2018-01-28
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2015-12-18
  • 2021-11-10
  • 1970-01-01
相关资源
最近更新 更多