【问题标题】:NodeJS - Why POST after GET doesn't work in express app?NodeJS - 为什么 GET 后 POST 在 express 应用程序中不起作用?
【发布时间】:2016-08-05 16:26:11
【问题描述】:

这个应用只有GET /test,还没有POST /test。我正在将二进制文件 1.dat 上传到它,它应该返回“404”的答案,但似乎我收到了 ECONNRESET 错误。

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]

【问题讨论】:

    标签: node.js freeze connection-reset


    【解决方案1】:

    您发送的不是状态 404,而是您正文中的字符串。

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

    【讨论】:

    • 是的,但这不能解决问题,仍然会抛出相同的异常。我找到了问题的根源,也许我会提出其他问题。
    • 我已经复制了您的代码并从上面添加了我的更改。我还删除了var expect = require('expect.js');,因为它没有被使用。一切似乎都完美无缺(节点版本:v4.4.1,express 版本 4.14,mac os 10.11)。这不是你的代码,也不是表达的。
    猜你喜欢
    • 2021-06-16
    • 1970-01-01
    • 2019-01-26
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2021-04-14
    • 2021-10-05
    相关资源
    最近更新 更多