2014-07-11 31 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