如果这有帮助:我正在按照 Simon Holmes 的书“Getting MEAN with Mongo, Express, Angular, and Node”的第 3 章中的说明进行操作。
我正处于将路由和控制器分成单独文件的开始阶段。当我绕过创建require('express').Router().get('/', ctrlMain.index);
具有相同功能的变量和硬代码以及其他组合时,我得到了同样的错误。因此,我已将问题缩小到 的第一行index.js
,尽管我得到的错误指向同一文件第 6 行中的 GET 方法。我提供了我的index.js
, main,js
, app.js
, 文件,以及我在下面收到的完整错误消息。如果这些信息还不够,我很乐意提供我的项目/文件结构的任何其他部分!希望有人能够指出我正确的方向。
这是我的index.js
文件:
var express = require('express');
var router = express.Router();
var ctrlMain = require('../controllers/main');
/* GET home page. */
router.get('/', ctrlMain.index);
module.exports = router;
我的main.js
文件:
/* GET home page */
module.exports.index = function(req, res) {
res.render('index', { title: 'Express' });
};
和我的app.js
文件(不确定这是否有帮助):
var express = require('express')
, routes = require('./app_server/routes/index')
, user = require('./app_server/routes/user')
, http = require('http')
, path = require('path');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/app_server' + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
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('/', 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'));
});
最后,这是我得到的错误:
TypeError: Cannot read property 'use' of undefined
at Object.<anonymous> (/home/ubuntu/workspace/lab5/app_server/routes/index.js:6:7)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/home/ubuntu/workspace/lab5/app.js:6:14)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)