CSVを読むためのモジュールをインストールする。

npm install csv-parse @types/csv-parse -S

サンプルはこんな感じだ。えーっと、ソースにコメントを書いたので説明は省く。あと、オプション指定できる項 の細かい説明はここに詳しく書いてある。

import csvParse from "csv-parse";
import csvParseSync from "csv-parse/lib/sync";

// csvファイルの内容を文字列で用意する。
// 本当はfs.readFileでcsvファイルを読み込み
const csvstr = '"hoge1","hoge2"\n1,3';

//// 非同期処理
// とりあえず、パースする。
// 配列(1レコード)の配列で返される。
csvParse(csvstr, {}, (err, recodes)=>{
    // [ [ 'hoge1', 'hoge2' ], [ '1', '3' ] ] と表示される。
    console.log(recodes);
});

// 1行目がフィールド名の場合
// 1行目のフィールド名がkeyになっているオブジェクトの配列になる。
csvParse(csvstr, { columns:true }, (err, recodes)=>{
    // [ { hoge1: '1', hoge2: '3' } ] と表示される。
    console.log(recodes);
});

// 1行目がフィールド名でkeyを独自に付ける場合
// オプションのnocolumnsでフィールド名(オブジェクトのkeyになる)を指定する。
// 1行目がフィールド名なので2行目からパーするするようにfromオプションで2を指定している。
// 結果、columnsで指定したフィールド名がkeyのオブジェクトの配列になる。
csvParse(csvstr, { columns:["field1", "field2"], from:2 }, (err, recodes)=>{
    // [ { field1: '1', field2: '3' } ] と表示される。
    console.log(recodes);
    // hoge1:1 と表示される。
    console.log(`hoge1:${recodes[0]["field1"]}`);
    // hoge2:3 と表示される。
    console.log(`hoge2:${recodes[0]["field2"]}`);
});


///// 同期処理
// 1行目がフィールド名でkeyを独自に付ける場合
try {
    const recodes = csvParseSync(csvstr, { columns:["field1", "field2"], from:2 });
    // [ { field1: '1', field2: '3' } ] と表示される。
    console.log(recodes);
} catch(err) {
    console.log(err);
}