Node.js path模块使用报错,请求协助排查问题原因
问题排查与代码修正
首先明确你的核心报错:ReferenceError: files is not defined,这是代码里的变量声明问题导致的。另外纠正一个误解:path是Node.js的内置核心模块,不需要额外安装(包括全局安装),直接require就能用,和package.json无关。
以下是修正后的完整代码,同时修复了递归逻辑、路径拼接的问题:
const fs = require('fs'); const path = require('path'); const getAllFiles = function (dirPath, arrayOfFiles) { // 声明files变量,解决未定义报错 const files = fs.readdirSync(dirPath); arrayOfFiles = arrayOfFiles || []; files.forEach((file) => { const fullFilePath = path.join(dirPath, file); // 用path.join规范拼接路径,避免手动拼接的斜杠问题 if (fs.statSync(fullFilePath).isDirectory()) { arrayOfFiles = getAllFiles(fullFilePath, arrayOfFiles); } else { // 正确拼接完整路径,去掉多余的斜杠 arrayOfFiles.push(path.join(__dirname, dirPath, file)); } }); // 必须返回数组,否则递归时无法传递结果 return arrayOfFiles; }; const fileList = getAllFiles('D:/JS/ProjectX'); console.log(fileList);
关键修正点:
- 给
files添加const声明,解决未定义的引用错误 - 所有路径拼接使用
path.join,适配跨平台的路径格式,避免手动拼接的错误 - 在函数末尾添加
return arrayOfFiles,保证递归调用能正确传递文件列表 - 将打印逻辑移到函数外部,避免递归过程中多次输出
内容的提问来源于stack exchange,提问作者Dany King
相关产品推荐
相关产品推荐

