【问题标题】:Not sure how to get express routing to work不知道如何让快速路由工作
【发布时间】:2020-12-10 19:42:15
【问题描述】:

我有一个带有以下代码的index.js 文件...

const express = require('express');

const app = express();

app.use(express.json({ extended: false }));

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

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log(`Server started on PORT ${PORT}`));

还有一个routes.js 文件,代码如下...

const express = require('express');
const router = express.Router();

router.get('test', (req, res) => {
  console.log('im here!')
  res.send('hello from test route!');
});

module.exports = router;

我的文件结构是...

server/
  users/
    routes.js
  index.js

我可以毫无问题地启动服务器,但是,如果我尝试转到/api/users/test 路由,它不起作用并说无法获得该路由。

由于某种原因,当我创建带有.js 扩展名的文件时,会出现.jsx 图标。我正在使用 vscode 并且觉得这可能是问题但我不知道如何解决它?

作为我的路线文件中的更新...

router.get('test', (req, res) => {});

需要改成以下...

router.get('/test', (req, res) => {});

在我的index.js 文件中

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

基本上,在测试之前添加斜线,在用户之后去掉斜线。

我不知道为什么这会是个问题,但现在可以了。

【问题讨论】:

    标签: express routes


    【解决方案1】:

    在 routes.js 中:

    router
        .get ('/test',(req, res) => {
        console.log('im here!')
        res.send('hello from test route!');
    });
    

    您只是忘记了路线前面的斜线。 您现在应该会看到您的回复 @ http://localhost:5000/api/users/test。

    【讨论】:

    • 所以,我知道我可以在app.use 中使用require,无论如何,我尝试了你提到的但仍然没有。我真的认为这与 vscode 使我的 js 文件成为 jsx 文件有关,但我对此并不积极,我也不知道如何解决这个问题
    • 其实最奇怪的事情发生了。在尝试了你的东西然后点击控制 z 来取回我现在的东西之后。我对为什么感到非常困惑,我的文件仍然显示为jsx,所以我想这不是问题。至少现在可以了,但我真的不明白以前出了什么问题
    • 是的,当然!第一点是相当美观的。此外,您不必使用 router.route 并在下一个传递。实际上,您只是在测试路线之前忘记了斜杠: .get ('/test',(req, res)
    • 关于 jsx 问题:不能直接点击 vs code 底部蓝色栏的“JavaScript”,选择 JavaScript (javascript) 而不是 JavaScript React 来选择另一种语言模式吗?
    • 是的,我可以。感谢您指出了这一点。在处理 Django 应用程序时,我没有意识到并最终更改了我的 vscode 上的一些设置,所以自从它改变了。
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2023-03-29
    • 2023-02-09
    • 2018-02-17
    • 2015-03-03
    • 2018-07-18
    • 2014-02-03
    • 2019-01-13
    相关资源
    最近更新 更多