简介
我在Node中构建了一些后端功能(第一次使用Node)。问题是整个事情是在一个页面(index.js)中构建的,所以现在我遵循一些基本教程并设置快速路由器中间件,现在尝试遵循模块化MVC方法,
这段代码很简单,但是当我分成两页Server.js
和config.js
时,它们会刹车。我知道这是一个简单的问题,但我无法发现它。有人可以帮助发现问题并改善结构吗?
问题
我转到http://localhost:8080/about
或其他路线,我得到了
无法获取/关于
而不是正确的打印输出。
后端/ server.js
var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
// get an instance of router
var router = express.Router();
// START THE SERVER
// ==============================================
app.listen(port);
console.log('Server has started!! ' + port);
后端/ config.js
router.use(function(req, res, next) {
console.log(req.method, req.url);
next();
});
router.get('/', function(req, res) {
res.send('im the home page!');
});
// sample route with a route the way we're used to seeing it
router.get('/sample', function(req, res) {
res.send('this is a sample!');
});
router.get('/about', function(req, res) {
res.send('im the about page!');
});
app.route('/login')
.get(function(req, res) {
res.send('this is the login form');
})
.post(function(req, res) {
console.log('processing'); // shows on console when post is made
res.send('processing the login form!'); // output on postman
});
app.use('/', router);
答案 0 :(得分:1)
正如@SLaks在评论中所说,您需要导入(require
)您的backend/config.js
文件。但它并不那么简单......
在节点中,变量的范围限定在它们出现的文件中,因此如果您只是将require('./config')
添加到server.js
文件中,那么这也不会起作用,因为router
config.js
中的变量是该文件的本地变量 - 它不会知道router
中的server.js
变量。
解决方法是让config.js
文件导出server.js
文件可用于配置内容的函数。例如
<强> config.js 强>
module.exports = function(router) {
// set up your router here with router.use, etc.
};
<强> server.js 强>
var configure = require('./config');
// after you set up your express router...
configure(router);
// now start listening