If you assume each line of the input file is complete, self-standing JSON, then a split-into-lines-then-parse-each strategy works well.
But even if the data isn't limited to a single line, not all is lost. You can heuristically parse the file. It isn't hyper-efficient, but except for very large files you'll probably never know the difference:
function incrementallyParseJSON(filepath) {
    var lines = fs.readFileSync(filepath)
                  .toString()
                  .split(/\n/g);
    var result = [];
    var [start, stop] = [0, 1];
    while (stop <= lines.length) {
        try { 
            var part = JSON.parse(lines.slice(start, stop).join('\n'));
            result.push(part);
            [start, stop] = [stop, stop+1]; 
        } catch (e) {
            stop += 1;
        }
    }
    return result;
}
So if your file is:
{"obj1": "john"}
{"obj2": "sally",
 "more": "other"}
{"obj3": "veronica"}
"something"
12
The result will be:
[ { obj1: 'john' },
  { obj2: 'sally', more: 'other' },
  { obj3: 'veronica' },
  'something',
  12 ]
Example:
function incrementallyParseJSON(str) {
    var lines = str.split(/\n/g);
    var result = [];
    var [start, stop] = [0, 1];
    while (stop <= lines.length) {
        try { 
            var part = JSON.parse(lines.slice(start, stop).join('\n'));
            result.push(part);
            [start, stop] = [stop, stop+1]; 
        } catch (e) {
            stop += 1;
        }
    }
    return result;
}
var str =
  '{"obj1": "john"}\n' +
  '{"obj2": "sally",\n' +
  ' "more": "other"}\n' +
  '{"obj3": "veronica"}\n' +
  '"something"\n' +
  '12';
console.log(incrementallyParseJSON(str));