JSONファイルの読み取りと解析を行うかなり簡単なスクリプトがあります。 JSONは非常にシンプルで、私はそれが有効であると確信しています。今非同期および同期読み取りとは異なる結果
{
"foo": "bar"
}
、私はfs.readFile
でそれを読んしようとしています。読み込み時にエラーは発生せず、返されるデータは文字列です。唯一の問題は、文字列が空であることです。
私はコードを繰り返しましたが、fs.readFileSync
を使用しました。これは、同じパスを使用してファイルを完全に返しました。どちらもutf-8
エンコーディングが指定されています。
ご覧のとおり、非常にシンプルなコードです。
fs.readFile('./some/path/file.json', 'utf8', function(err, data) {
if(!err) {
console.log(data); // Empty string...
}
});
console.log(fs.readFileSync('./some/path/file.json', 'utf8')); // Displays JSON file
権限または所有権はありますか。私は755
と777
の許可セットを無駄にしようとしました。
私はノードv0.4.10を実行しています。正しい方向に私を指すための提案は、非常に高く評価されます。ありがとう。
編集:ここに私の実際のコードのブロックがあります。うまくいけば、これはあなたに良いアイデアを与えるでしょう。
// Make sure the file is okay
fs.stat(file, function(err, stats) {
if(!err && stats.isFile()) {
// It is okay. Now load the file
fs.readFile(file, 'utf-8', function(readErr, data) {
if(!readErr && data) {
// File loaded!
// Now attempt to parse the config
try {
parsedConfig = JSON.parse(data);
self.mergeConfig(parsedConfig);
// The config was loaded and merged
// We can now call the callback
// Pass the error as null
callback.call(self, null);
// Share the news about the new config
self.emit('configLoaded', file, parsedConfig, data);
}
catch(e) {
callback.call(self, new Error(file + ': The config file is not valid JSON.'));
}
}
else {
callback.call(self, new Error(file + ': The config file could not be read.'));
}
});
}
else {
callback.call(self, new Error(file + ': The config file does not exist.'));
}
});
コード内にutf8が見えません。それは実際のコードですか? – thejh
申し訳ありませんが、私はちょうどコピーを入力した、私はUTF-8を追加します。 – Olical
@thejs私は実際のコードのブロックを追加しました。 'file'変数が文字列であり、正しいファイルに行くことを保証できます。 – Olical