You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js Slash Commands开发遇ENOENT -4058错误求助

解决Discord.js中fs.readdirSync()的ENOENT -4058错误

核心原因

这个错误是Node.js找不到你指定的目录,大概率是相对路径的工作目录不匹配,或者目录结构存在问题。

具体解决步骤

  • 改用绝对路径读取目录
    相对路径依赖Node进程的工作目录,nodemon启动时可能和你预期的不一致。用__dirname结合path模块生成绝对路径,彻底解决路径问题:

    const fs = require('fs');
    const path = require('path');
    
    // 生成commands目录的绝对路径
    const foldersPath = path.join(__dirname, 'commands');
    const commandFolders = fs.readdirSync(foldersPath);
    

    __dirname会指向当前脚本文件所在的目录,path.join自动处理不同系统的路径分隔符,确保路径100%正确。

  • 核对目录结构和文件名
    确认项目里确实存在commands/utility目录,且目录下有合法的.js命令文件。注意文件名和目录名的大小写(Linux/macOS系统区分大小写,Windows不区分,跨环境开发要统一)。

  • 检查nodemon的启动方式
    确保你是在项目根目录下执行nodemon启动命令,或者在package.json的scripts里明确指定启动文件的路径:

    "scripts": {
      "start": "nodemon ./src/index.js"
    }
    

    这样nodemon会以项目根目录作为工作目录,避免路径偏移。

  • 调试路径是否正确
    在读取目录前打印路径,确认指向的是正确的位置:

    console.log('命令目录绝对路径:', foldersPath);
    

    如果打印的路径不对,就调整path.join里的参数,比如如果index.js在src目录下,而commands在项目根目录,就要改成path.join(__dirname, '../commands')。

内容的提问来源于stack exchange,提问作者Arthurgamer Pro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 14:47:07