我使用Express创建了一个Node.js项目,并在使用自定义路由时遇到了此异常。


  500 TypeError:fn不是函数
  在回调(/WallaceBot/WallaceBot/node_modules/express/lib/router/index.js:272:11)
  在param(/WallaceBot/WallaceBot/node_modules/express/lib/router/index.js:246:11)
  通过时(/WallaceBot/WallaceBot/node_modules/express/lib/router/index.js:253:5)
  在Router._dispatch(/WallaceBot/WallaceBot/node_modules/express/lib/router/index.js:280:5)
  在Object.Router.middleware [作为句柄](/WallaceBot/WallaceBot/node_modules/express/lib/router/index.js:45:10)
  在下一个(/WallaceBot/WallaceBot/node_modules/express/node_modules/connect/lib/http.js:204:15)
  在Object.methodOverride [作为句柄](/WallaceBot/WallaceBot/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:35:5)
  在下一个(/WallaceBot/WallaceBot/node_modules/express/node_modules/connect/lib/http.js:204:15)
  在Object.bodyParser [作为句柄](/WallaceBot/WallaceBot/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:88:61)
  在下一个(/WallaceBot/WallaceBot/node_modules/express/node_modules/connect/lib/http.js:204:15)


我在app.js中声明路由

var webhook = require('./routes/webhook.js');
app.get('/', routes.index);
app.get('/webhook', webhook);


在我的webhook.js中

/*
 * GET Webhook.
 */

exports.webhook = function(req, res){
  res.render('index', { title: 'Webhook' })
};


但是,我使用另一种方法在app.js中声明路由,例如

app.get('/webhook', function(req, res){
  res.render('index', { title: 'Webhook' })
});


我没有那个例外。

有人知道为什么吗?

最佳答案

作为其他答案的替代解决方案,您可以将webhook.js文件更改为如下所示:

/*
 * GET Webhook.
 */

exports = module.exports = function(req, res){
  res.render('index', { title: 'Webhook' })
};

关于javascript - Express&Node.js异常:500 TypeError:fn不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37282397/

10-11 14:13