For some reason I'm having such a hard time converting this txt file to an actual javascript array.
myJson.txt
{"action": "key press", "timestamp": 1523783621, "user": "neovim"}
{"action": "unlike", "timestamp": 1523784584, "user": "r00k"}
{"action": "touch", "timestamp": 1523784963, "user": "eevee"}
{"action": "report as spam", "timestamp": 1523786005, "user": "moxie"}
Currently what I have that doesn't work
const fs = require('fs');
function convert(input_file_path) {
    const file = fs.readFileSync(input_file_path, 'utf8');
    const newFormat = file
      .replace(/(\r\n\t|\n|\r\t)/gm,'')
      .replace(/}{/g, '},{');
    console.log([JSON.parse(newFormat)]);
}
convert('myJson.txt');
                Since your file contains a JSON object per line, you could read that file line by line, using readline.
Each line is then parsed, and push into an array, which is then returned (resolved) after the file is fully read.
'use strict';
const fs = require('fs');
const readline = require('readline');
function convert(file) {
    return new Promise((resolve, reject) => {
        const stream = fs.createReadStream(file);
        // Handle stream error (IE: file not found)
        stream.on('error', reject);
        const reader = readline.createInterface({
            input: stream
        });
        const array = [];
        reader.on('line', line => {
            array.push(JSON.parse(line));
        });
        reader.on('close', () => resolve(array));
    });
}
convert('myJson.txt')
    .then(res => {
        console.log(res);
    })
    .catch(err => console.error(err));
                        I would have done this in this way
var fs = require('fs');
var readline = require('readline');
var array = [];
var input = null;
var rd = readline.createInterface({
    input: fs.createReadStream(__dirname+'/demo.txt')
    
});
rd.on('line', function(line) {
    array.push(JSON.parse(line));
});
rd.on('close', function(d){
  array.forEach(e=>console.log(e.action))
})
What's happening here is, I am reading the lines of the file on by one using readline which is one of the core modules of nodejs. Listening on the events and doing what needed. 
And yeah, you'll have to parse the line to JSON for sure ;)
Thanks
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With