外部文件 404 Not Found 中的 NodeJS Express 路由

NodeJS Express routes in external file 404 Not Found

我是 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')); 直接在主文件中定义路由时,效果很好。我的控制台没有错误。

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

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

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

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

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

中的 approuter

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

一旦我实例化了名为 app 的 express 实例

app.js

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

routes.js 其中 registerUser 是路由匹配时调用的函数

module.exports = (app) => {
   app.route('/auth/register')
    .post(registerUser);
}