1

如果这有帮助:我正在按照 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)

4

0 回答 0