readFile
パスに設定したいクライアントからのパラメータがありますがreadFile
、ディレクトリを読み取っていないため、メソッドを呼び出して空の配列を返すときに変数を設定していません。パスの問題を修正するにはどうすればよいですか?
これを行うと動作します
var filesData = {};
console.log('SEARCH ENV PRINTING', searchEnv);
if (searchEnv === 'DIT') {
ditDirectory.readDirectory(function(files) {
filesData.logFiles = files;
filesData.searchEnv = searchEnv;
asyncFiles(filesData);
});
} else if (searchEnv === 'St') {
stDirectory.readDirectory(function(files) {
filesData.logFiles = files;
filesData.searchEnv = searchEnv;
asyncFiles(filesData);
});
}
fs.readFile('logs/dit/'+ logfile.filename, 'utf8', function (err, data) {
console.log('inside readFile', data);
if (err) {
return done(err);
}
});
filesData.searchEnv
ユーザー入力から設定すると機能しません
fs.readFile('logs/' + filesData.searchEnv + '/'+ logfile.filename,
'utf8',
function (err, data) {
console.log('inside readFile', data);
if (err) {
return done(err);
}
});
説明した順序で実際に呼び出す場合、 の非同期コールバックでのみ値を割り当てるため、filesData.searchEnv
を呼び出した時点では には何も含まれません。fs.readFile
readDirectory
したがって、ファイル読み取り呼び出しをコールバックに配置するか、promise を使用して有効なデータを待機する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加