2013-05-12 1 views
0

쓸모 미들웨어 :Express.js 콘솔에서 정의되지 않은 부분은 어디에서 왔습니까? 테스트 목적으로

module.exports = function() { 
    return function rankick(req, res, next) { 
     if (Math.random() < 0.5) { 
      return next('Random kick...'); 
     } 

     next(); 
    }; 
}; 

간단한 표현 응용 프로그램에 주입 :

var express = require('express'), 
    http = require('http'), 
    path = require('path') 
    rankick= require('./rankick'), 
    util = require('util'); 

var app = express(); 

app.set('port', process.env.PORT || 8080); 
app.set('views', __dirname + '/views'); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(rankick()); // Using the middleware 

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

app.use(function (req, res, next) { 
    res.end('Hello World!'); 
}); 

http.createServer(app).listen(app.get('port')); 

next()500 오류 다음에 오류 문자열, 콘솔 로그 undefined를 호출 할 때 :

undefined 
GET/500 28ms 
GET/200 4ms 
undefined 
GET/500 5ms 
+0

'require ('path')'비트는 어리 석다. 그것은'__dirname' 줄 중 하나에서만 사용됩니다. 아마도 그것이 필요하지 않을 수도 있습니다 귀하의 운영 체제에 따라 '/'또는 '\'를 추가하는 것입니다, 그것은 생산에서 변경되지 않습니다. 그냥 내 2c –

답변

-1

해야 할 일

module.exports = function rankick(req, res, next) { 
    if (Math.random() < 0.5) { 
     console.log('Random kick...'); 
    } 
    else 
     next(); 
}; 

return을 사용하여 함수를 전달하지 마십시오. module.exports은 require가 호출 될 때 전달되는 객체입니다.

또한 next()은 다음 미들웨어로 계속 처리하려면 호출해야합니다. 처리/차용 요청을 중지하려면 전화하지 마십시오 next()

+0

favicon의 미들웨어 http://www.senchalabs.org/connect/favicon.html에서''next (err)'가 사용됩니다. – gremo

+0

'next (err)'는 다음 미들웨어에 대한 오류를 전달하는 오류 처리입니다. 무작위로 걷어차는 경우에는 그럴 필요가 없습니다. – user568109

1

이 줄은 errorHandler middleware에 있습니까? 어쩌면 새로운 오류 ('임의 킥 ..')가 나올 것으로 예상됩니까?

errorHandler를 기본값으로 사용 했으므로 오래되었습니다. 그래서 나는 100 % 확실하지 않습니다. 그것은 downvote 아니에요 그리고이 대답을 제거합니다.