使用fs.readFileSync读取文件遇ENOENT错误,求排查解决
问题排查与解决
从报错信息来看,Node.js无法找到你指定的文件路径,结合你的调试信息,重点排查以下几点:
1. 确认文件的真实位置
你提到文件路径是/src/files/2022.json,但报错显示尝试访问的是/Users/MYNAME/Dropbox/Mac/Documents/projects/checker-be/src/files/2022.json。请在终端中进入项目根目录(即process.cwd()输出的路径),执行以下命令验证文件是否存在:
ls -la src/files/
如果返回"No such file or directory",说明文件不在src目录下的files文件夹里,大概率是直接放在项目根目录的files文件夹中。此时执行:
ls -la files/
若能看到2022.json,就说明路径写错了。
2. 修正路径写法
- 如果文件在项目根目录的
files文件夹下,用以下代码读取:
或者基于fs.readFileSync(path.join(process.cwd(), 'files/2022.json'), {encoding:'utf8', flag:'r'});__dirname的写法:fs.readFileSync(path.join(__dirname, '../../files/2022.json'), {encoding:'utf8', flag:'r'}); - 如果文件确实在
src/files下,但终端命令显示存在,那检查文件名是否有拼写错误(比如大小写、隐藏后缀,比如实际是2022.json.txt但系统隐藏了后缀)。
3. 其他可能的原因
- 若你是在构建后的环境运行代码,检查打包配置是否将
files文件夹复制到了构建目录中,否则构建后找不到源文件。 - 极少数情况是文件权限问题,可执行
chmod 644 目标文件路径赋予可读权限。
内容的提问来源于stack exchange,提问作者JohnF
相关产品推荐
相关产品推荐

