2014-07-11 24 views
8

这里对nodejs比较陌生。我有一个nodejs webserver运行,通过ajax提供数据。我现在需要扩展服务器以响应各种发布请求。我试图运行的是bodyParser中间件,但在不同的开发电脑上运行。NodeJS连接错误 - 没有方法'记录器'

OS:Debian的 的NodeJS:v0.10.29

已经运行 “NPM安装连接” 以普通用户和根

代码

var http = require('http'); 
var connect = require('connect'); 

var app = connect() 
    .use(connect.logger('dev')) 
    .use(connect.static('public')) 
    .use(connect.bodyParser()) 
    .use(function(req, res){ 
    res.end(JSON.stringify(req.body)); 
    }) 

http.createServer(app).listen(2081); 

得到这个输出 卡尔@ crunchbang:〜/nodedev $ node ./test.js

/home/carl/nodedev/test.js:5 
    .use(connect.logger('dev')) 
      ^
TypeError: Object function createServer() { 
    function app(req, res, next){ app.handle(req, res, next); } 
    merge(app, proto); 
    merge(app, EventEmitter.prototype); 
    app.route = '/'; 
    app.stack = []; 
    return app; 
} has no method 'logger' 
    at Object.<anonymous> (/home/carl/nodedev/test.js:5:16) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:906:3 

我知道我错过了一些非常简单的事情,任何帮助表示赞赏。

回答

14

连接不再附带捆绑中间件。包含中间件的代码看起来就像这样。

var http = require('http'); 
var connect = require('connect'); 
var bodyParser = require('body-parser'); 
var logger = require('morgan'); 

var app = connect() 
    .use(logger()) 
    .use(connect.static('public')) 
    .use(bodyParser.urlencoded({ 
     extended: true 
    })) 
    .use(bodyParser.json()) 
    .use(function(req, res){ 
    res.end(JSON.stringify(req.body)); 
    }) 

http.createServer(app).listen(2081); 
+0

谢谢:)我设置生产Web服务器一个月左右,以前看起来像它的改变。感谢堆! – Carlhako

3

正如你可以在文档中看到:https://www.npmjs.org/package/connect

摩根 - 以前记录

现在你需要使用摩根。

+0

我正在看sencha网站http://www.senchalabs.org/connect/,它仍然是指记录器。谢谢你的提示 – Carlhako