Nodejs 和 express,路由器文件已加载,但路由器不工作
Nodejs and express, the router file is loaded, but the router is not working
我正在使用 Node.js 作为移动应用程序的后端服务器,但是 express 的路由器无法正常工作。 None 路由器正常工作。我复制了我之前项目的代码,我之前项目的代码也不行
节点版本:12.10.0
速成版:4.17.1
我真的不知道我哪里做错了,谢谢你的帮助。
谢谢!!!
这是我的 API:
apis 在配置文件中
api: {
client: {
prefix: "./api/user",
url: [
"/login",
"/register",
"/logout",
"/search",
"/address",
"/cart",
"/purchasedHistory",
"/products",
"/staticImg"
]
},
admin: {
prefix: "./api/admin",
url: [
"/main"
]
}
}
这是我注册路由器的方法
// route to display versions
app.get('/api', function (req, res) {
res.json(config.api);
});
// REGISTER THE PREFIXES
for (var k in config.api) {
config.api[k].url.forEach(aUrl => {
app.use(aUrl, require(config.api[k].prefix + aUrl));
});
}
这里是login.js
const router = express.Router();
// logs all the api requests
router.use(function (req, res, next) {
// TODO log the request here
if (config.debug) console.log('login: someone has made a request');
next(); // make sure we go to the next routes and don't stop here
});
router.get('/get', function(req, res) {
res.json({ message: 'hahahahahahah' });
});
//Return the router for the server
module.exports = router;
当我使用 api
http://localhost:8080/api/
我得到了以下结果
{"client":
{"prefix":"./api/user","url":["/login"]},
"admin":
{"prefix":"./api/admin","url":["/main"]}
}
但是当我运行一个api
http://localhost:8080/api/login/get
我遇到了这个错误
Cannot GET /api/login/get
这是调试模式下 express 的输出
express:router dispatching GET /api/login/get +1m
express:router query : /api/login/get +0ms
express:router expressInit : /api/login/get +0ms
express:router corsMiddleware : /api/login/get +0ms
express:router jsonParser : /api/login/get +0ms
express:router urlencodedParser : /api/login/get +0ms
express:router <anonymous> : /api/login/get +0ms
express:router haltOnTimedout : /api/login/get +0ms
express 的输出看起来很正常。
在 express 中 app.use
用于在所有请求上注册中间件,或者您可以在特定 path/route 上注册中间件,然后中间件将在指定路径上执行。
此处您使用的是 app.use('/login')
而不是 app.use('/api/login')
。如果你点击 http://localhost:8080/login/get
它会起作用,但 http://localhost:8080
不会起作用。
我正在使用 Node.js 作为移动应用程序的后端服务器,但是 express 的路由器无法正常工作。 None 路由器正常工作。我复制了我之前项目的代码,我之前项目的代码也不行
节点版本:12.10.0 速成版:4.17.1
我真的不知道我哪里做错了,谢谢你的帮助。
谢谢!!!
这是我的 API: apis 在配置文件中
api: {
client: {
prefix: "./api/user",
url: [
"/login",
"/register",
"/logout",
"/search",
"/address",
"/cart",
"/purchasedHistory",
"/products",
"/staticImg"
]
},
admin: {
prefix: "./api/admin",
url: [
"/main"
]
}
}
这是我注册路由器的方法
// route to display versions
app.get('/api', function (req, res) {
res.json(config.api);
});
// REGISTER THE PREFIXES
for (var k in config.api) {
config.api[k].url.forEach(aUrl => {
app.use(aUrl, require(config.api[k].prefix + aUrl));
});
}
这里是login.js
const router = express.Router();
// logs all the api requests
router.use(function (req, res, next) {
// TODO log the request here
if (config.debug) console.log('login: someone has made a request');
next(); // make sure we go to the next routes and don't stop here
});
router.get('/get', function(req, res) {
res.json({ message: 'hahahahahahah' });
});
//Return the router for the server
module.exports = router;
当我使用 api
http://localhost:8080/api/
我得到了以下结果
{"client":
{"prefix":"./api/user","url":["/login"]},
"admin":
{"prefix":"./api/admin","url":["/main"]}
}
但是当我运行一个api
http://localhost:8080/api/login/get
我遇到了这个错误
Cannot GET /api/login/get
这是调试模式下 express 的输出
express:router dispatching GET /api/login/get +1m
express:router query : /api/login/get +0ms
express:router expressInit : /api/login/get +0ms
express:router corsMiddleware : /api/login/get +0ms
express:router jsonParser : /api/login/get +0ms
express:router urlencodedParser : /api/login/get +0ms
express:router <anonymous> : /api/login/get +0ms
express:router haltOnTimedout : /api/login/get +0ms
express 的输出看起来很正常。
在 express 中 app.use
用于在所有请求上注册中间件,或者您可以在特定 path/route 上注册中间件,然后中间件将在指定路径上执行。
此处您使用的是 app.use('/login')
而不是 app.use('/api/login')
。如果你点击 http://localhost:8080/login/get
它会起作用,但 http://localhost:8080
不会起作用。