javascript - 错误 : Route. get() 需要回调函数,但得到了 [对象未定义]

标签 javascript node.js routes

我正在阅读一本名为“MEAN Web Development”的 MEAN Stack 书。到目前为止,这是一本很棒的书,但我目前陷入困境。我已经下载了他们提供的所有代码,因此我可以仔细检查我的工作,看起来我的所有代码都是正确的。我搜索了类似的错误并尝试实现这些错误的版本,但还没有任何效果。根据错误,这些是产生错误的文件。

另一个注意事项,当我删除 list 函数的代码时。只需使用 create 函数,一切就可以正常工作。但是,一旦我再次添加 list 函数,它就会中断并给出 Return.get() 需要回调的错误。但得到了一个 undefined object 。

用户.服务器. 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);
    }
});
};

用户.服务器.路由

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;
}

服务器.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/');

Error Message

最佳答案

我正在阅读同一本书,但遇到了同样的错误。

应用程序似乎正在寻找从未显示过的exports.signout函数,该函数应该写在app/controllers/users.server.controller.js中

我只是这样写的:

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

然后它就按预期工作了。

关于javascript - 错误 : Route. get() 需要回调函数,但得到了 [对象未定义],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335365/

相关文章:

javascript - AngularJS Controller 不工作

javascript - jquery 函数在引号中的单个空格后工作

javascript - Angular JS选择菜单项出现两次

docker-compose Web 和应用程序服务器组合强制内部重定向

javascript - 获取隐藏表单元素的属性值

javascript - 单击菜单项机器人框架向机器人发送消息

javascript - 如何使用 TypeScript 导入自定义 node.js 插件模块

node.js - 使用 aws-sdk-mock 的 Promise 支持和 DocumentClient 进行模拟

java - 特定域的多个 Servlet

php - 将 AngularJS $routeparams 与 Laravel 一起使用