我正在使用node.js进行开发,但是我不太明白为什么某些设置可以在一个实例中起作用,但如果稍微更改一下,它就无法在另一个实例中工作。
在我的app.js文件中,我有以下代码:
app.use('/musicplayer', require('./routes/music/index'));
在我的音乐\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中声明我的主要路由。