错误:ENOTDIR:不是目录,scandir './src/functions/.DS_Store' 这是什么以及如何修复它

问题描述 投票:0回答:3
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}`);
}

我试图为我的 Discord 机器人创建日志功能,但发现什么也没有发生,并且在编写代码后一切都崩溃了,所以我从主“bot.js”文件中删除了所有文件和代码,现在它给出了此错误

javascript node.js
3个回答
1
投票

fs.readdirSync
返回目录的所有内容,包括文件而不仅仅是文件夹。
.DS_Store
是Mac用来存储
Finder
信息的特殊文件(不是文件夹)。

在您粘贴的示例代码中,请确保在迭代

readdirSync()
循环中的内容之前检查
for
返回的项目是否是目录,如下所示

const functionFolders = fs.readdirSync(`./src/functions`).filter(item => item.isDirectory())
for (const folder of functionFolders) {
  // rest of the logic
}

0
投票

我有同样的错误,但是在命令中 我发现的修复看起来像这样

constfoldersPath = path.join(__dirname, '命令'); const commandFolders = fs.readdirSync(foldersPath).filter(file => file !== '.DS_Store');


-1
投票

好的,为了删除 .DS_Store 文件,我刚刚在终端中编写了以下行并且它起作用了。

今天我还遇到了有关“fs.readdirSync()”函数的另一个错误,表示找不到提供的目录,因此要修复该问题,只需提供文件夹/文件的完整路径即可。 (例如,向下滚动)

在终端中写入的行以删除/删除所有 .DS_Store 文件。

找到。 -名称“.DS_Store”-类型f-删除

示例:

(之前)

const commandsFolder = fs.readdirSync('./Commands');

(之后)

const commandsFolder = fs.readdirSync('/Users/roopa/Desktop/projects/LLbot/src/Commands');

希望有帮助:)

抱歉英语不好:')

© www.soinside.com 2019 - 2024. All rights reserved.