Node.js使用fs.readdirSync报ENOENT错误,求排查路径问题
问题解答:Node.js fs.readdirSync 报 ENOENT 错误
错误根源:你用单引号
'包裹了带变量的路径字符串,单引号无法解析ES6模板字符串的${folder}变量语法,导致路径被当作字面量./src/functions/${folder}处理,而非替换成functionFolders数组里的实际文件夹名,系统自然找不到对应目录。修复方案:
- 把包裹路径的单引号换成反引号
`,让模板字符串正常解析变量:for (const folder of functionFolders ){ const functionFiles = fs.readdirSync(`./src/functions/${folder}`).filter(file => file.endsWith('.js')); for (const file of functionFiles) require(`./src/functions/${folder}/${file}`)(client); } - 修正路径一致性:原代码中
require的路径少了src/前缀,和readdirSync的路径不匹配,这会导致后续加载模块时也出现找不到文件的问题,建议统一路径结构。
- 把包裹路径的单引号换成反引号
额外验证建议:可以在
readdirSync前添加console.log(./src/functions/${folder}),打印拼接后的路径,确认是否和实际项目的目录结构一致。
内容的提问来源于stack exchange,提问作者Alem Kaleck
相关产品推荐
相关产品推荐

