【问题标题】:Error: read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27) Uploading the files to store i S3错误:在 TLSWrap.onStreamRead (internal/stream_base_commons.js:205:27) 读取 ECONNRESET 上传文件以存储 i S3
【发布时间】:2021-01-02 18:37:35
【问题描述】:

当我尝试上传文件并存储到 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

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

【问题讨论】:

    标签: storage multer multer-s3


    【解决方案1】:

    我在使用 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() 来解决它。

    【讨论】:

      【解决方案2】:

      此问题可能与this bug in NodeJS 有关。您可以尝试的一件事是将res.end(); 放在您的res.sendFile(...)res.send(...) 电话之后。如果这不起作用,您可能需要实现一个函数来调用进程 uncaughtException,或者等待查看 Node 社区最终如何解决该问题。

      【讨论】:

        猜你喜欢
        • 2019-05-30
        • 1970-01-01
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        • 2013-09-09
        • 2021-10-20
        • 1970-01-01
        • 2018-06-23
        相关资源
        最近更新 更多