错误:在 TLSWrap.onStreamRead 处读取 ECONNRESET (internal/stream_base_commons.js:205:27) 上传文件以存储 i S3

问题描述 投票:0回答:6

当我尝试上传文件并将其存储到 s3 位置时,出现错误

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

以上是版本问题还是bug?

    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

请任何人解决这个问题...

storage multer multer-s3
6个回答
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


0
投票

这个问题可能与NodeJS 中的这个错误有关。您可以尝试的一件事是在

res.end();
res.sendFile(...)
调用之后添加
res.send(...)
。如果这不起作用,您可能需要实现一个函数来调用进程 uncaughtException,或者等待看看 Node 社区最终如何解决该问题。


0
投票

我在使用 Node 16.7.0 时遇到了类似的问题:

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

在检查“错误”事件后,我可以通过添加

req.end()
来解决这个问题。


0
投票

在使用节点版本 16.13.2 的 Angular 项目中尝试运行“npm install”时,我遇到了同样的问题。

当我将节点版本切换到 12.18.1 时,我能够毫无问题地运行命令。


0
投票

您是否有一个疯狂的 docker 实例崩溃并循环重新启动?有时它会导致随机连接重置。


0
投票

#错误:读取ECONNRESET

我的 Nextjs 应用程序中遇到了这个问题,解决方案是

update node to LTS 18.x.x and node version to 9.9

© www.soinside.com 2019 - 2024. All rights reserved.