2016-08-05 8 views
-1

이 앱에는 GET /test 만 있고, 아직 POST /test은 없습니다. 1.dat 이진 파일을 업로드하고 있는데 '404'응답을 반환해야하지만 수신자가 나타납니다. ECONNRESET 오류가 발생했습니다.NodeJS - GET 후 POST가 특급 응용 프로그램에서 작동하지 않는 이유는 무엇입니까?

var express = require('express'); 
var app = express(); 
var expect = require('expect.js'); 
var request = require('supertest'); 

var router = express.Router({ 
    caseSensitive: true, 
    strict: true 
}); 
router.get('/', function(req, res, next) { 
    res.send('test'); 
}); 

app.use('/test', router); 

app.use(function(req, res, next) { 
    res.send('404'); 
}); 

Promise.resolve().then(function() { 
    var agent = request(app); 
    return new Promise(function(resolve, reject) { 
     agent 
      .get('/test') 
      .expect(200) 
      .end(function(err) { 
       if (err) { 
        return reject(err); 
       } 
       resolve(agent); 
      }); 
    }); 
}).then(function(agent) { 
    return new Promise(function(resolve, reject) { 
     agent 
      .post('/test') 
      .attach('tmp', new Buffer([1, 2, 3]), '1.dat') 
      .expect(404) 
      .end(function(err, res) { 
       if (err) { 
        return reject(err); 
       } 
       resolve(); 
      }); 
    }); 
}).then(function() { 
    process.exit(0); 
}).catch(function(err) { 
    console.log(err.stack); 
    process.exit(1); 
}); 

그러나 .expect(404)의 유효성을 검사 할 때이 오류가 발생하는 이유 :

[TypeError: Cannot read property 'status' of undefined] 

답변

2

당신은 상태 404 만 몸에 문자열을 전송하지 않습니다.

app.use(function(req, res, next) { 
    res.status(404).end(); 
}); 
+0

네,하지만이 문제는 해결되지 않지만 여전히 동일한 예외가 발생합니다. 나는 문제의 뿌리를 발견했다. 아마도 나는 다른 질문을 만들 것이다. –

+0

코드를 복사하고 위에서 변경 한 내용을 추가했습니다. 어쨌든 사용되지 않았기 때문에'var expect = require ('expect.js');도 제거했습니다. 모든 것이 완벽하게 작동하는 것 같습니다 (노드 버전 : v4.4.1, 명시 적 버전 4.14, Mac OS 10.11). 그것은 당신의 코드도 아니고 표현 된 것도 아닙니다. –