[英]Error: Route.get() requires callback functions but got a [object Undefined]
I'm working through a MEAN Stack book called "MEAN Web Development". 我正在研究一本名为“ MEAN Web开发”的MEAN Stack书。 It's been a great book so far, but I'm currently stuck.
到目前为止,这是一本很棒的书,但我目前仍处于困境。 I've downloaded all the code they provide so I can double check my work and it seems all my code is correct.
我已经下载了他们提供的所有代码,所以我可以仔细检查我的工作,看来我所有的代码都是正确的。 I've searched for similar errors and tried to implement versions of those errors, but nothing has worked yet.
我已经搜索了类似的错误,并尝试实现这些错误的版本,但是还没有任何工作。 According to the error these are the files that are producing the error.
根据错误,这些是产生错误的文件。
Another note, when I remove the code for the list
function. 另一个说明,当我删除
list
函数的代码时。 Everything works fine with just the create
function. 只要使用
create
函数,一切都可以正常工作。 But, as soon as I add in the list
function again it breaks and gives me the error that Return.get() needs a callback. 但是,一旦我再次添加
list
函数,它就会中断,并给我以下错误:Return.get()需要回调。 but got an undefined object. 但是有一个未定义的对象。
users.server.controller 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 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 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 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/');
I'm going through the same book and got this same error. 我正在读同一本书,并遇到了同样的错误。
It seems the app is looking for the exports.signout function that is never shown that should be written in app/controllers/users.server.controller.js 看来该应用程序正在寻找应显示在app / controllers / users.server.controller.js中的从未显示的export.signout函数。
I just wrote it like this: 我只是这样写:
exports.signout = function(req, res, nest) {
};
And then it worked as expected. 然后它按预期工作。
Put your 把你的
var users = require('../../app/controllers/users.server.controller');
inside your module.exports method, like this: 在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.