node:internal/fs/utils:351
throw err;
^
Error: ENOTDIR: not a directory, scandir './src/functions/.DS_Store'
at Object.readdirSync (node:fs:1532:3)
at Object.<anonymous> (/Users/roopa/Desktop/projects/LLbot/src/bot.js:43:6)
at Module._compile (node:internal/modules/cjs/loader:1255:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1309:10)
at Module.load (node:internal/modules/cjs/loader:1113:32)
at Module._load (node:internal/modules/cjs/loader:960:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
at node:internal/main/run_main_module:23:47 {
errno: -20,
syscall: 'scandir',
code: 'ENOTDIR',
path: './src/functions/.DS_Store'
}
代码中出错的部分
const functionFolders = fs.readdirSync(`./src/functions`);
for (const folder of functionFolders) {
const functionFiles = fs
.readdirSync(`./src/functions/${folder}`)
.filter((file) => file.endsWith(".js"));
for (const file of functionFiles) require(`./functions/${folder}/${file}`);
}
我试图使日志功能为我的不和谐机器人,看到什么都没有发生,一切都打破后,写代码,所以我删除了所有文件和代码从主'bot.js'文件,现在它给这个错误
2条答案
按热度按时间tmb3ates1#
fs.readdirSync
返回目录的所有内容,包括文件,而不仅仅是文件夹。.DS_Store
是Mac用来存储Finder
信息的特殊文件(不是文件夹)。在粘贴的示例代码中,确保在迭代
for
循环中的内容之前检查readdirSync()
返回的项是否是目录,类似于下面的代码wvmv3b1j2#
好的,所以要删除.DS_Store文件,我只是在终端中写了下面一行,它工作了。
另外今天我有另一个关于'fs.readdirSync()'函数的错误,说提供的目录找不到,所以要修复,给予你的文件夹/文件的整个路径.***(例如,向下滚动)***
写入终端以移除/删除所有.DS_Store文件的行。
find . -name“.DS_Store”-type f -delete
示例:
(之前)
(之后)
希望有帮助:)
对不起,英语不好:)