gpt4 book ai didi

具有快速路由和子路由的 Node.js

转载 作者:搜寻专家 更新时间:2023-10-31 23:59:39 24 4
gpt4 key购买 nike

我正在玩 node.js,我不太明白为什么我设置的东西在一个实例中工作,但如果我稍作更改,它就不会在另一个实例中工作。

在我的 app.js 中有

app.use('/musicplayer',  require('./routes/music/index'));

在我的 music\index.js 中有

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

router.use('/users', require('./users'));

module.exports = router;

在我的 users.js 中我有这个 - 工作版本

var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();

usersRouter.get('/login', function(req, res, next) {
res.render('music/login', { title: 'Express' });
});
module.exports = usersRouter;

但我想将我正在定义的路由封装到另一个函数中,这样不工作这只会挂起页面。

我的 users.js 的修改版本不工作

var express = require('express');
var usersRouter = express.Router();
var sqllite3 = require('sqlite3').verbose();

var router = function () {
usersRouter.get('/login', function (req, res, next) {
res.render('music/login', {title: 'Express'});
});
return usersRouter;
}
module.exports = router;

在控制台中,我可以看到它尝试获取,但从未被路由,我看到这个“GET/musicplayer/users/login - - ms - -”。

我什至在我创建的匿名函数的返回之前放置了一个 console.log 以知道它正在进入那里并且我正在从父路由连接路径。我确实在屏幕上点击了日志操作。

任何帮助或提示将不胜感激:)

PS 如果您想知道我正在尝试为我想玩的不同开发工作分离出应用程序。所以这就是为什么我使用 musicplayer/index.js 进行子路由,而不是将所有内容都放在 app.js 中以声明我的主要路由。

最佳答案

Router.use() 需要另一个 Router 的实例。但是,您的(非工作)模块仅返回一个函数。

在您的 index.js 中使用它来解决问题:

router.use('/users', require('./users')());

关于具有快速路由和子路由的 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39863805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com