【发布时间】:2015-05-19 04:52:56
【问题描述】:
我正在阅读 Amos Q. Haviv 的 MEAN Web 开发教科书。一切顺利,但我在使用 Express.js 时遇到了一个错误,我似乎无法在网上找到答案。没有关于这本书的 cmets 或任何概述此错误的内容,我找不到任何有用的答案。我正在处理一个简单的索引页面:
书中使用的Express版本为:4.8.8 我的最新版本是:4.12.4
控制器:
var express = require('express');
var hasName = function(req, res, next) {
if (req.params.name) {
next();
} else {
res.send('What is your name?');
}
};
var sayHello = function(req, res, next) {
res.send('Hello ' + req.params.name);
};
var app = express();
app.get('/', hasName, sayHello);
app.listen(3000);
console.log('Server running at http://localhost:3000/');
路线:
module.exports = function(app) {
var index = require ('../controllers/index.server.controller');
app.get('/', index.render);
};
Express 配置文件:
var express = require('express');
module.exports = function() {
var app = express();
require('../app/routes/index.server.routes')(app);
return app;
};
Server.js:
var express = require('./config/express');
var app = express();
app.listen(3000);
module.exports = app;
console.log('Server running at http://localhost:3000/');
最后,当我启动服务器时出现的错误消息:
Error: Route.get() requires callback functions but got a [object Undefined]
at Route.<anonymous> (...\node_modules\express
\lib\router\route.js:170:15)
at Array.forEach (native)
at Route.(anonymous function) [as get] (...\no
de_modules\express\lib\router\route.js:166:15)
at EventEmitter.app.(anonymous function) (...\
node_modules\express\lib\application.js:465:19)
at module.exports (...\app\routes\index.server
.routes.js:3:9)
at module.exports (...\config\express.js:5:49)
at Object.<anonymous> (...\server.js:3:11)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
失败的地方似乎是当
app.get('/', index.render);
被调用,因为索引未定义/空对象而出错。我无法确定为什么会发生这种情况。
如果我使用 module.exports 导出控制器 .js 文件的应用程序端,服务器将启动,但稍后会出现其他错误。我已经尝试了我能想到的一切来解决这个问题,包括完全复制粘贴书中的示例。我真的很想能够跟随这本书,直到我能够掌握这个开发堆栈。任何帮助表示赞赏。
【问题讨论】:
-
什么是
../controllers/index.server.controller以及它的render属性? -
我是否可以建议使用
express.router而不是将整个应用程序传递给另一个模块?