ファイルの読み込み
CoddyのNode.jsジャーニー「Node.jsの基礎」セクションの一部。レッスン 12/33。
実行するたびに同じ3つのメモから始まります。メモはメモリ上にしか存在しないためです。
node:fsのreadFileSync(path, 'utf8')は、ファイルを文字列として読み込みます。メモファイルにはJSONが格納されます。これはJavaScriptの配列やオブジェクトのように書かれたデータ形式で、JSON.parseはそのテキストを配列に変換します。存在しないファイルを読み込むとENOENTエラーが発生するため、まずexistsSyncで確認します。この例ではcondition ? a : bを使っています。これは、条件がtrueならaを、falseならbを返します。
import { existsSync, readFileSync } from 'node:fs';
const scores = existsSync('scores.json')
? JSON.parse(readFileSync('scores.json', 'utf8'))
: [];
console.log(scores.length);'utf8'を指定しないと、文字列ではなく、ファイルの生のバイト列であるBufferが返されます。
チャレンジ
簡単このステップでは、CommonJS Modules のプロジェクトファイル(legacy/stats.cjs を含む)ではなく、コース用に用意されたメモのコマンドラインツールプロジェクトを開きます。これまでの作業は、それぞれのレッスンに残っています。store.js を編集する前に、用意されたファイルを読んでください。このコピーには、これまでのすべてのコマンドに加えて、新しい clear コマンドが含まれています。
現在は、実行するたびに store.js に書かれた同じ3つのメモから始まります。メモはファイルから読み込むようにします。ファイルは notes.json で、Files で開けます。
store.jsで、固定された3つのメモのリストを置き換えます。ストアのnotesには、notes.jsonに保存された配列を格納します。ファイルをテキストとして読み込み、その後、JSON テキストを配列に変換します。notes.jsonが存在しない場合、ストアはエラーで停止するのではなく、空の配列で始まるようにします。読み込む前に、ファイルが存在することを確認してください。
notes.json には最初から2つのメモがあるため、node notes.js list を実行すると、次のように表示されます。
Notes for you
1. Buy milk
2. Call Adanotes.json がない場合は、次のように表示されます。
Notes for you
No notes yet変更するのは store.js だけです。ストアが空の場合に No notes yet と表示する処理は、すでに notes.js にあります。
試してみましょう:$ node notes.js の後のボックスに list と入力して、Enter を押します。ファイルにある2つのメモが表示されます。次に clear と入力します。このコマンドはすでに notes.js にあります。notes.json を削除し、Deleted notes.json と表示します。もう一度 list と入力すると、No notes yet が表示されます。「確認」を押す前に、「ファイルをリセット」を押して notes.json を元に戻してください。チェックでこのファイルが必要になるためです。
自分で試してみよう
// このリストの代わりに notes.json からメモを読み込む。
const store = {
notes: ['Buy milk', 'Call Ada', 'Water the plants'],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
export default store;
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
Node.jsの基礎のすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド