1
嗨我看過類似的錯誤,但它們都不適用於此環境。我正在通過「中庸之道」書,但將Express 3上的所有課程應用到Express 4應用程序。簡單錯誤:Express 3 - > 4.移動控制器並請求索引「Route.get()需要回調函數,但得到了[對象未定義]」
在app.js
app.set('views', path.join(__dirname, 'app_server/views'));
//index.jade is located here and confirmed to work before moving controller
...
require('./routes')(app);
//Instead of app.use('/', routes);
在路由/ index.js
var ctrl = require('../app_server/controllers/main');
module.exports = function (app) {
app.get('/', ctrl.index);
};
在APP_SERVER /控制器/ main.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Loc8r' });
});
// /* Also tried */
// exports.index = function(req, res){
// res.render('index', { title: 'Express' });
// };
運行該應用的產率「錯誤: Route.get()需要回調函數,但在res.render('index',{title:'Loc8r'})上有一個[object Undefined]線。
在這裏呆了幾個小時。非常感謝幫助。
謝謝你這個工作!它說我不能投票,因爲我需要15個代表...:\ – boblikesoup 2015-02-06 23:30:56
我很好奇爲什麼我不能在index.js中定義app = require('express'),而不是必須通過require( 」 ./routes')(app); – boblikesoup 2015-02-07 00:26:19
@boblikesoup'require('express')'只會爲您提供應用程序的'express()'構造函數,而不是您創建的'app'實例。 'require('./app')'可以訪問你創建的實例,但是如果'app.js'也需要其他模塊,這會創建[模塊週期](http://nodejs.org /api/modules.html#modules_cycles)。你還可以在'routes/index'中使用另一個'Router'來從你的控制器中收集這些信息,而在'app.js'中收集'.use()'作爲其他任何中間件。 – 2015-02-07 21:36:32