【发布时间】:2021-08-04 03:09:13
【问题描述】:
我的终端控制台给了我以下信息:
Error: Route.put() requires callback functions but got a [object Undefined]
这是我的应用 > 路由 >articles.server.routes.js
var users = require('../../app/controllers/users.server.controller'),
articles = require('../../app/controllers/articles.server.controller');
module.exports = function(app) {
app.route('/api/articles')
.get(articles.list)
.post(users.requiresLogin, articles.create);
app.route('/api/articles/:articleId')
.get(articles.read)
// .put(users.requiresLogin, articles.hasAuthorization, articles.update)
// .delete(users.requiresLogin, articles.hasAuthorization, articles.delete);
app.param('articleId', articles.articleByID);
};
我收到以下错误:
// .put(users.requiresLogin, articles.hasAuthorization, articles.update)
// .delete(users.requiresLogin, articles.hasAuthorization,
当我注释掉这两行时,控制台中的错误就会消失。
我的 package.json 中有 "method-override": "~2.2.0" 并且已正确安装。我在我的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'),
flash = require('connect-flash'),
passport = require('passport');
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());
【问题讨论】:
-
请显示
articles.hasAuthorization函数 -
我明白了。我将 hasAuthorization 放在我的用户控制器而不是我的文章控制器中。感谢 500 万让我找到正确的位置!
-
@BenWong 您能否将其发布为答案而不是评论,然后将其标记为已接受?
标签: javascript angularjs node.js express mean-stack