Ошибка: чтение ECONNRESET в TLSWrap.onStreamRead (внутренний /stream_base_commons.js:205:27) Загрузка файлов в хранилище i S3

#storage #multer #multer-s3

#Хранение #несколько #мультер-s3

Вопрос:

Когда я пытаюсь загрузить файл и сохранить его в папке s3, я получил сообщение об ошибке

     Error: read ECONNRESET
        at TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27)
  

является ли вышеуказанное проблемой версии или ошибкой?

     var express = require('express'), 
        aws = require('aws-sdk'),
        bodyParser = require('body-parser'),
        multer = require('multer'),
        multerS3 = require('multer-s3');
    
    aws.config.update({
        secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
        accessKeyId: 'xxxxxxxxxxxxxxxx',
        region: 'us-east-1'
    });
    
    var app = express(),
        s3 = new aws.S3();
    
    app.use(bodyParser.json());
    
    var upload = multer({
        storage: multerS3({
            s3: s3,
            bucket: 'xxxxx',
            key: function (req, file, cb) {
                console.log(file);
                cb(null, file.originalname); //use Date.now() for unique file keys
            }
        })
    });
    
    //open in browser to see upload form
    app.get('/', function (req, res) {
        res.sendFile(__dirname   '/index.html');
    });
    
    //used by upload form
    app.post('/upload', upload.array('upl',1), function (req, res, next) {
        res.send("Uploaded!");
    });
    
    app.listen(3000, function () {
        console.log('Example app listening on port 3000!');
    });
  

и индексируйте HTML-файл

     <form method="post" enctype="multipart/form-data" action="/upload">
            <input type="file" name="upl"/>
            <input type="submit"/>
    </form>
  

и версии пакетов

       "dependencies": {
        "aws-sdk": "^2.753.0",
        "body-parser": "^1.19.0",
        "express": "^4.17.1",
        "multer": "^1.4.2",
        "multer-s3": "^2.9.0"
      }
  

и моя версия узла и npm равна

значение узла: 12.16.1 npm: 6.13.4

Пожалуйста, кто-нибудь решит эту проблему…

Ответ №1:

Я также столкнулся с этой проблемой, и после проведения большого анализа я обнаружил, что это происходит из-за антивируса, установленного на моем компьютере. Особенно из-за Sophos. Вы можете найти эту проблему на — https://community.sophos.com/intercept-x-endpoint/f/discussions/134136/sophos-network-threat-detection-is-blocking-cypress-automation-tool

Чтобы решить эту проблему, попробуйте выполнить свои тестовые примеры в браузере Electron или обратитесь к своей команде администраторов и получите пароль Sophos, а затем Login into the Sophos, Go to settings and disable 'Network Threat Protection

Ответ №2:

Эта проблема может быть связана с этой ошибкой в NodeJS. Одна вещь, которую вы можете попробовать, это поместить res.end(); после ваших вызовов res.sendFile(...) и res.send(...) . Если это не сработает, вам может потребоваться реализовать функцию для вызова исключения process uncaughtException или подождать, чтобы увидеть, как сообщество узлов в конечном итоге решит проблему.

Ответ №3:

У меня была аналогичная проблема с использованием узла 16.7.0:

 Error: read ECONNRESET
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:220:20) {
  errno: -54,
  code: 'ECONNRESET',
  syscall: 'read'
}
  

Я смог решить эту проблему, добавив req.end() после проверки события «ошибка».

Ответ №4:

У меня была такая же проблема при попытке запустить ‘npm install’ в проекте Angular, используя версию узла 16.13.2.

Когда я переключил версию узла на 12.18.1, я смог запустить команду без проблем.

Ответ №5:

У вас нет сумасшедшего экземпляра docker, который выходит из строя и перезапускается в цикле? Иногда это приводит к случайному сбросу соединения.