node.jsで常にキャッシュなしでjsonファイルを読み込む方法
ググって最初に見つけたのがrequireを使う方法
var json = require('./test.json');
これでいいんだと思って進めてたんですが突如はまりました。
requireはjsonの内容が古いまま
ユニットテスト書いてて、ファイルを削除してるのに、1つ目のテストのjsonオブジェクトが返ってくる。
どうやら、requireはオブジェクトをキャッシュするようだ。 この仕組みを理解しておらず、なんでだろうーなんでだろうーって結構はまりました。 jsonファイル消してるし、ファイルの内容も更新されてるし。。
fs.readFileSyncを使う
もし、更新されたjsonのデータを読み込みたいみたいなときは、
キャッシュを消すか、fs.readFileSync
でデータ読み込んでjsonにする方法使えば解決。
fs.readFileSync
でJSONにする方法は、こちら。
javascript - Using Node.JS, how do I read a JSON object into (server) memory? - Stack Overflow
var obj = JSON.parse(fs.readFileSync('filepath', 'utf8'));
いやー、盛大にはまりました。