expressJS路由问题,简单的东西无法解决
我最近把我所有的路由代码移到了不同的文件中,但现在我的路由解析不稳定。这里有一个简单的例子- 我的app.jsexpressJS路由问题,简单的东西无法解决,express,express-router,Express,Express Router,我最近把我所有的路由代码移到了不同的文件中,但现在我的路由解析不稳定。这里有一个简单的例子- 我的app.js const express = require('express'); const app = express(); var dataLoader = require('./routes/dataLoader'); app.all( '/api/load', dataLoader); My dataLoader.js const express = require('express
const express = require('express');
const app = express();
var dataLoader = require('./routes/dataLoader');
app.all( '/api/load', dataLoader);
My dataLoader.js
const express = require('express');
const router = express.Router();
router.get('/api/load', (req, res) => {
res.send('Hello Loader...');
});
router.get('/api/load/bob', (req, res) => {
res.send('Hello Loader - Bob...');
});
router.get('/api/load/jim', (req, res) => {
res.send('Hello Loader - Jim...');
});
module.exports = router;
/api/load工作正常,而/api/load/jim和/api/load/bob都会导致:
Cannot GET /api/load/jim (or Cannot GET /api/load/bob, respectively)
我使用用户app.all()而不是app.use(),因为我在解决主路径“/api/load”时遇到了问题,使用all似乎可以解决这个问题,但现在我不确定
“发动机”:{
节点“^8.9.1”
},
“依赖项”:{
“蓝鸟”:“^3.5.1”,
“正文分析器”:“^1.15.1”,
“快车”:“^4.13.4”,
“猫鼬”:“4.9.8”
}
有什么建议吗 执行此操作时:
app.all( '/api/load', dataLoader);
然后在数据加载器
路由器中,定义如下路由:
router.get('/api/load', (req, res) => {
res.send('Hello Loader...');
});
实际上,您正在为api/load/api/load
定义一个路由,这可能不是您想要的。路径是累积的
app.use()。此外,对于路由器,您应该使用usingapp.use()
,而不是app.all()
因此,在您的情况下,将dataLoader
路由器更改为:
// whole router is configured at /api/loader
const router = require('express').Router();
router.get('/', (req, res) => {
res.send('Hello Loader...');
});
router.get('/bob', (req, res) => {
res.send('Hello Loader - Bob...');
});
router.get('/jim', (req, res) => {
res.send('Hello Loader - Jim...');
});
module.exports = router;
您刚刚为/api/load/api/load
定义了一个路由。我怀疑那是你想要的。另外,您可能想使用app.use(path,router)
,而不是app.all(path,router)
。只使用router.get('/bob')
?我觉得这应该是相对于你在app.allAnd中提供的内容而言的。是的,如果有疑问,就使用app.use-我从来没有感觉到需要使用app.all。我个人理解你的所有建议,我同意,这是我期望它的表现,我会再试一次,然后在3分钟后返回给你。好的-这似乎正在工作-使用app.use()和/吉姆。我不知道为什么在我尝试这样做的时候它不起作用…可能是我的代码中有其他不稳定的东西。谢谢。谢谢,当我第一次将代码转移到路由文件时,我确实尝试过这样做——但它出错了,或者找不到“cant Found GET…”路由,但我想我在其他地方遇到了一个错误,后来我修复了这个错误,没有再回去尝试。