我的终端控制台给了我以下内容:
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());
答案 0 :(得分:0)
当api函数签名中的参数不适用于编译时预期的参数时,会发生这种情况。确保您的控制器正确导入,并且还要在api和cntroller上以相同的方式编写控制操作(函数)(复制粘贴)。
答案 1 :(得分:0)
就我而言,这就是我所做的。而不是像这样导入我的控制器:
const forgotPassword = require('../controllers/forgotPasswordController');
我用过这个:
const { forgotPassword } = require('../controllers/forgotPasswordController');
解决了问题
答案 2 :(得分:-1)
如果其他人遇到这种情况:当我遇到这种情况时,我的电话不匹配,即PUT
正在呼叫POST
。确保一切都排好!