我是NodeJ的新手,并表示。我的目标是要有一个单独的路由文件,其中包含我的所有应用程序路由。因此,我创建了一个名为routes.js
的文件。内容如下:
const express = require('express');
const router = express.Router();
router.get('auth/register', require('./controllers/auth/register'));
module.exports = router;
在我的主文件中,我需要带有此行的文件。 app
变量包含我的快速实例。
app.use('/', require('./routes'));
如果我在浏览器中调用http://localhost/auth/register
,则总是会遇到404 Not Found
错误。当我使用app.get('/auth/register', require('./controllers/auth/register'));
在主文件中直接定义路由时,它可以很好地工作。我的控制台没有错误。
有人知道为什么我的路由文件不起作用吗?谢谢您的帮助!
答案 0 :(得分: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)
,并可以访问app
内部的router
和routes.js
。
答案 1 :(得分:1)
传统上,我要做的是将Express实例传递到您的路由模块中:
一旦我实例化了名为app的快递实例
app.js
require('./routes.js')(app);
routes.js,其中registerUser是我们在匹配路由时要调用的函数
module.exports = (app) => {
app.route('/auth/register')
.post(registerUser);
}