Nodeにて、SJISで、かつ列数が行ごとに変動するcsvを読み込んで使う必要があったため、
試行錯誤して実装できたコードを残しておきます。
いろいろな参考コードがネットにありましたが、
「SJISで、非同期読み込みで実装」そのままのものは見つからず、
結構試行錯誤しました。
どなたかの参考になれば幸いにて。
constcsv=require('csv')constfs=require('fs')consticonv=require('iconv-lite')constcsvFilePath='./path/to/csv_file.csv'/**
* csvデータの取得(SJISのファイル)
*/constgetCsv=asyncfunction(){returnnewPromise(resolve=>{fs.readFile(csvFilePath,function(err,data){//非同期処理なのでreadFileSyncではなくreadFileif(err)throwerrconstbuf=Buffer.from(data,'binary')//new BufferはdeprecatedなのでBuffer.fromを使うconstret=iconv.decode(buf,'Shift_JIS')//SJISをdecodeconstret2=iconv.encode(ret,'UTF-8')//UTF-8へencodecsv.parse(ret,{relax_column_count:true},//列数変動ファイルの読込オプションfunction(err,output){resolve(output)})})})}asyncfunctionmain(){constdata=awaitgetCsv()//非同期読込console.log(data)//UTF-8でのCSVデータ確認console.log(data.length)//行数の確認}main()//実行