首页 文章

app.js在快递3中不起作用

提问于
浏览
-1

我正进入(状态

connect deprecated multipart: use parser (multiparty, busboy, formidable) npm module instead at node_modules\express\node_modules\connect\lib\middleware\bodyParser.js
connect deprecated methodOverride: use method-override npm module instead at app.js:22:17
D:\login\node_modules\express\lib\router\index.js:306
    throw new Error(msg);
    ^

Error: .post() requires callback functions but got a [object Undefined]
    at D:\login\node_modules\express\lib\router\index.js:306:11
    at Array.forEach (native)
    at Router.route (D:\login\node_modules\express\lib\router\index.js:302:13)
    at Router.(anonymous function) [as post] (D:\login\node_modules\express\lib\router\index.js:333:16)
    at Function.app.(anonymous function) [as post] (D:\login\node_modules\express\lib\application.js:467:26)
    at Object. (D:\login\app.js:32:5)
    at Module._compile (module.js:434:26)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)

在我的节点中,express.Express版本为3,我无法启动app.js文件 .

这是app.js文件:

/**  * Module dependencies.  */

var express = require('express');
var routes = require('./routes');
var signup = require('./routes/login');
var login = require('./routes/signup');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 8000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({secret: 'secretkeyQWERTY'}));
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')){
  var use=app.use(express.errorHandler());
}

app.get('/', routes.index);
app.post('/signup', signup.signup);
app.post('/login', login.login);


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

1 回答

  • 4

    我刚用快递3.x测试了这个 .

    您可以通过安装 body-parser 包轻松解决此问题 . 不推荐使用express中内置的body-parser连接 .

    npm install --save body-parser
    npm install --save method-override
    

    假设您想接受JSON作为正文......

    更改您的代码:

    app.use(express.bodyParser())
    app.use(express.methodOverride())
    

    至:

    var bodyParser = require('body-parser');
    var methodOverride = require('method-override')
    app.use(bodyParser.json());
    app.use(methodOverride());
    

相关问题