The "chunk" argument must be of type string or an instance of Buffer

36,649

Solution 1

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

And instead of res.end(data) use res.send(data) or better yet res.send({ data }).


EDIT I didn't notice that you didn't use express, try this:

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

Solution 2

In case this may help someone, I was using data type other than String, Number to be exact, so I changed it to String to resolve this error

Share:
36,649
anish anil
Author by

anish anil

Updated on February 10, 2022

Comments

  • anish anil
    anish anil about 2 years

    I'm running the following code and it fails with the below error.

    AWS Code to list all objects inside a bucker

    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}`)
    

    The first output which is console.log displays everything as expected. However the res.end to render the output to the screen fails with the below error.

    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
    }