簡體   English   中英

錯誤:Route.get()需要回調函數,但得到了一個[object Undefined]

[英]Error: Route.get() requires callback functions but got a [object Undefined]

我正在研究一本名為“ MEAN Web開發”的MEAN Stack書。 到目前為止,這是一本很棒的書,但我目前仍處於困境。 我已經下載了他們提供的所有代碼,所以我可以仔細檢查我的工作,看來我所有的代碼都是正確的。 我已經搜索了類似的錯誤,並嘗試實現這些錯誤的版本,但是還沒有任何工作。 根據錯誤,這些是產生錯誤的文件。

另一個說明,當我刪除list函數的代碼時。 只要使用create函數,一切都可以正常工作。 但是,一旦我再次添加list函數,它就會中斷,並給我以下錯誤:Return.get()需要回調。 但是有一個未定義的對象。

users.server.controller

var User = require('mongoose').model('User');

exports.create = function(req, res, next) {
var user = new User(req.body);

user.save(function(err){
    if (err) {
        return next(err);
    } else {
        res.json(user);
    }
});
};


exports.list = function(req, res, next) {
User.find({}, function(err, users) {
    if (err) {
        return next(err);
    } else {
        res.json(users);
    }
});
};

users.server.routes

var users = require('../../app/controllers/users.server.controller');

module.exports = function(app) {
app.route('/users')
    .post(users.create)
    .get(users.list);
};

express.js

var config = require('./config'),
express = require('express'),
morgan = require('morgan'),
compress = require('compression'),
bodyParser = require('body-parser'),
methodOverride = require('method-override'),
session = require('express-session');


module.exports = function() {
var app = express();

if (process.env.NODE_ENV === 'development') {
    app.use(morgan('dev'));
} else if (process.env.NODE_ENV === 'production') {
    app.use(compress());
}
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
app.use(methodOverride());

app.use(session({
    saveUninitialized: true,
    resave: true,
    secret: config.sessionSecret
}));

app.set('views', './app/views');
app.set('view engine', 'ejs');

require('../app/routes/index.server.routes.js')(app);
require('../app/routes/users.server.routes.js')(app);

app.use(express.static('./public'));

return app;
}

server.js

process.env.NODE_ENV = process.env.NODE_ENV || 'development';

var mongoose = require('./config/mongoose'),
    express = require('./config/express');

var db = mongoose();
var app = express();
app.listen(3000);
module.exports = app;

console.log('Server running at http://localhost:3000/');

錯誤信息

我正在讀同一本書,並遇到了同樣的錯誤。

看來該應用程序正在尋找應顯示在app / controllers / users.server.controller.js中的從未顯示的export.signout函數。

我只是這樣寫:

exports.signout = function(req, res, nest) {
};

然后它按預期工作。

把你的

var users = require('../../app/controllers/users.server.controller');

在module.exports方法中,如下所示:

module.exports = function(app) {

  var users = require('../../app/controllers/users.server.controller');

  app.route('/users')
    .post(users.create)
    .get(users.list);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM