Node.js内に、あらかじめ生成されたテストファイル(1000+)の名前を非同期的に変更しようとしています。複数のファイルの名前を変更すると、Node.jsでasyncronioslyケーシングエラーが発生する
コードは次のようになります。
const fs = require('fs')
const { each } = require('async')
each(files, file => {
let newfile = 'new' + file
fs.rename(file, newfile, err => {
err ? console.log(err) : console.log('renamed')
}
})
これは、次のエラーにつながる:
Uncaught Error: ENOENT: no such file or directory, lstat '8d3320e35d22772f' at fs.lstatSync (fs.js:902:18) at Object.fs.lstatSync
それは同じエラーにネイティブforEach
リードでeach
を交換するので、async
モジュールの問題ではありません。また、同期バージョンの名前をfs.renameSync
に変更しても問題はありません。
私は、ファイルを2回ほど動かそうとしていますが、間違いがどこにあるのかは分かりません。この仮定は、すべてのファイルの名前がすでに変更されているため、後でエラーが発生する可能性が非常に高いためです。誰かがそのような行動を引き起こすものをアドバイスできますか?
'ファイル'配列はどのように見えますか?この配列のサンプルファイルパスはどのように見えますか? – forrert
迅速な対応に感謝します。ファイル配列は問題ありません。名前の同期バージョン 'fs.renameSync'は問題ありません。質問が更新されました。 –
'fs.rename()'が 'fs.lstatSync()'を使わないことは確信しています。それは本当に実行している唯一のコードですか? – robertklep