我可以在Express(nodeJs)中有多个路由文件吗

时间:2018-08-17 19:02:16

标签: node.js express

我正在尝试将路线放入多个文件中,以便根据模块进行组织。 如果我只使用一个这样的文件,一切正常

const apiRoutes = require('./routes/api')
app.use('/api', apiRoutes);

但是当我在index.js中使用以下代码并注册2个文件

const apiRoutes = require('./routes/api')
const apiRoutes2 = require('./routes/leads')
app.use(express.json());
app.use('/api', apiRoutes);
app.use('/leads', apiRoutes2);

我收到此错误

C:\nodeRoot\node_modules\express\lib\router\index.js:458
  throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
  ^

TypeError: Router.use() requires a middleware function but got a Object
at Function.use (C:\nodeRoot\node_modules\express\lib\router\index.js:458:13)
at Function.<anonymous> (C:\nodeRoot\node_modules\express\lib\application.js:220:21)
at Array.forEach (<anonymous>)

因此不确定是否只能为路由注册1个文件,否则还会导致此问题

1 个答案:

答案 0 :(得分:2)

几天前我遇到了类似的错误,我忘记了从其中一条路由中导出路由器。
确保从第二个路由文件中导出路由器。

module.exports = router;