node.js - 外部文件 404 Not Found 中的 NodeJS Express 路由
问题描述
我是 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'));
它运行良好。我的控制台中没有错误。
有谁知道为什么我的单独路由文件不起作用?谢谢您的帮助!
解决方案
您想传递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
.
推荐阅读
- visual-studio-code - 如何在 Visual Studio Code 中设置默认的 jupyter notebook 编辑器?
- jmeter - 如何在运行时将变量传递给graphql请求
- python-3.x - 在 tkinter 中添加线条颜色
- python - 表示不变量的简单解释
- amazon-s3 - 从本地存储到 S3 的 Artifactory 自动迁移不会发生
- javascript - 数字正确顺序显示按钮
- android - Flutter App 无法在物理 android 设备上运行,出现 com.android.build.gradle.tasks.PackageAndroidArtifact$IncrementalSplitterRunnable 错误
- javascript - 选择加载功能未在 html 中显示选项
- git - 是否有在发布期间最小化合并冲突解决的最佳实践?
- amazon-web-services - 有没有办法让其他账户可以访问 Route 53 公共托管区域?