我很擅长表达并仍在学习。当我启动服务器它给我错误 - .get()需要回调函数但得到[对象未定义]。此错误是由于以下行引起的,但不确定原因。
app.get('/about', routes.about);
以上行位于app.js -
/**
* Module dependencies.
*/
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/about', routes.about);
// app.get('/about', function(req, res) {
// res.send('abcd');
// });
app.get('/', routes.index);
app.get('/users', user.list);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
我的about.js文件位于routes文件夹中,代码是 -
exports.about = function(req,res) {
res.render('about', {body:'Welcome to my about section.'});
};
当我尝试从几个地方确认这是您如何定义路线时,不确定为什么会出现错误。
答案 0 :(得分:0)
我真的尝试了很多次,但从未找到解决方案..所以我使用了一种解决方法。 但如果有人知道如何使用“路线系统”,请告诉我:)
在你的情况下,它看起来像这样:
app.get('/about', function(req,res){
res.render('about', {body:'Welcome to my about section'});
});
马文
答案 1 :(得分:0)
在我看来,快递工作正常,但你如何加载你的模块是错误的。通过查看这些内容:
var routes = require('./routes');
var user = require('./routes/user');
我可以假设'./routes'
是一个文件夹。您将var routes
设置为等于文件夹?我不知道你的目录是什么样的,但你说你的关于函数是在about.js
。所以你的代码应该如下
var routes = require('./routes/about')
并且假设您的routes
文件夹与此服务器文件位于同一级别,否则您必须要求在正确的路径中。那应该解决它。