0

我是 NodeJs 和 express 的新手。我的目标是拥有一个单独的路由文件,其中包含我所有的应用程序路由。所以我创建了一个名为routes.js. 内容如下所示:

const express = require('express');

const router = express.Router();

router.get('auth/register', require('./controllers/auth/register'));

module.exports = router;

在我的主文件中,我需要带有这一行的文件。该app变量包含我的 express 实例。

app.use('/', require('./routes'));

如果我http://localhost/auth/register在浏览器中调用,我总是会遇到404 Not Found错误。当我直接在主文件中定义路由时,app.get('/auth/register', require('./controllers/auth/register'));它运行良好。我的控制台中没有错误。

有谁知道为什么我的单独路由文件不起作用?谢谢您的帮助!

4

2 回答 2

1

您想传递app到您的路线文件中。一个很好的模式是在你的主文件中导入你的路线,比如const routes = require('./routes');

在路线中,您可以像这样定义所有路线:

module.exports = (app, router) => {
  router.route("/").get()
  router.route("/something_else").post()
  app.use("/api", router)
  ...
};

这样,在您的主文件中,您可以:routes(app, router)并且可以访问approuter在您的routes.js.

于 2019-11-12T21:20:17.050 回答
1

传统上,我执行以下操作,即将 express 实例传递到您的 routes 模块中:

一旦我实例化了名为 app 的快速实例

应用程序.js

require('./routes.js')(app);

routes.js where registerUser 我们在路由匹配时调用的函数

module.exports = (app) => {
   app.route('/auth/register')
    .post(registerUser);
}
于 2019-11-12T21:22:44.233 回答