web-dev-qa-db-fra.com

L'argument "du morceau" doit être de type chaîne ou une instance de tampon

Je cours le code suivant et il échoue avec l'erreur ci-dessous.

Code AWS pour répertorier tous les objets à l'intérieur d'un beurrer

const http = require('http');
const Host = '127.0.0.1';
const port = 5000;
const path = require('path')
const url = require('url')
const fs = require('fs')
var AWS = require('aws-sdk');



const laptopDate = JSON.parse(fs.readFileSync(`${__dirname}/data/data.json`, `utf-8`))

AWS.config.update({accessKeyId: '***', secretAccessKey: '***', region: 'ap-south-1'});
s3 = new AWS.S3({apiVersion: '2006-03-01'});

var params = { 
    Bucket: 'bucket-name'
}

const server = http.createServer(function(req, res){
    const path = url.parse(req.url, true).pathname
    const id = url.parse(req.url, true).query.id

    if (path === 'bucket' || path === '/')
      s3.listObjects(params, function (err, data) {
        if(err) throw err;
        res.writeHead(200, { 'Content-Type': 'text/html' });
        //const output = JSON.parse(data)
        console.log(data)
        res.end(data)
      });
});

server.listen(port, Host, function(req, res) {
    console.log(`Server is listening on ${Host} and ${port}`)

La première sortie qui est console.log affiche tout comme prévu. Cependant, le Res.end Pour rendre la sortie à l'écran échoue avec l'erreur ci-dessous.

The "chunk" argument must be of type string or an instance of Buffer. Received an instance of Object
    at ServerResponse.end (_http_outgoing.js:752:13)
    at Response.<anonymous> (D:\js\Extra\starter\index.js:30:13)
    at Request.<anonymous> (D:\js\Extra\starter\node_modules\aws-sdk\lib\request.js:364:18)
    at Request.callListeners (D:\js\Extra\starter\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
    at Request.emit (D:\js\Extra\starter\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
    at Request.emit (D:\js\Extra\starter\node_modules\aws-sdk\lib\request.js:683:14)
    at Request.transition (D:\js\Extra\starter\node_modules\aws-sdk\lib\request.js:22:10)
    at AcceptorStateMachine.runTo (D:\js\Extra\starter\node_modules\aws-sdk\lib\state_machine.js:14:12)
    at D:\js\Extra\starter\node_modules\aws-sdk\lib\state_machine.js:26:10
    at Request.<anonymous> (D:\js\Extra\starter\node_modules\aws-sdk\lib\request.js:38:9) {
  message: 'The "chunk" argument must be of type string or an instance of Buffer. Received an instance of Object',
  code: 'ERR_INVALID_ARG_TYPE',
  time: 2020-05-18T08:39:24.916Z
}

Toute aide est grandement appréciée.

Merci Anish

6
anish anil

Supprimer ceci res.writeHead(200, { 'Content-Type': 'text/html' });

Et au lieu de res.end(data) Utilisez res.send(data) ou mieux encore res.send({ data }).


[~ # ~] éditer [~ # ~ ~] Je n'ai pas remarqué que vous n'avez pas utilisé Express, essayez ceci:

res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(data));
res.end();
1
zishone