外部文件 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
.
中的 app
和 router
传统上,我会执行以下操作,将 express 实例传递到您的路由模块中:
一旦我实例化了名为 app 的 express 实例
app.js
require('./routes.js')(app);
routes.js 其中 registerUser 是路由匹配时调用的函数
module.exports = (app) => {
app.route('/auth/register')
.post(registerUser);
}
我是 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
.
app
和 router
传统上,我会执行以下操作,将 express 实例传递到您的路由模块中:
一旦我实例化了名为 app 的 express 实例
app.js
require('./routes.js')(app);
routes.js 其中 registerUser 是路由匹配时调用的函数
module.exports = (app) => {
app.route('/auth/register')
.post(registerUser);
}