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

Node.js读取文件报错无此文件或目录且浏览器不显示内容如何解决?

问题原因及修复方案
  • 响应重复调用导致浏览器无内容
    代码的app.get('/')路由中先执行了res.json({name: 'waris', favFood: 'Pizza'}),Express 规定单个请求只能返回一次响应,调用res.json后已经完成了请求响应的发送、断开了请求链接,后续即便文件读取成功,res.send也无法再向浏览器返回内容。如果你的需求是返回读取的html文件,直接删除这行res.json代码即可。

  • 路径大小写不一致触发文件找不到错误
    你配置静态资源目录时使用的是大写开头的'Docs',但fs.readFile中写的是小写开头的'./docs/index.html',在Linux、macOS等大小写敏感的操作系统中,这两个路径会被识别为不同目录,直接抛出no such file or directory错误。需要统一路径大小写,比如都调整为'./Docs/index.html'。

  • 相对路径基准错误触发文件找不到错误
    Node.js中fs模块的相对路径基准是执行node命令时的工作目录,不是当前JS文件所在的目录,如果你不是在JS文件的同级目录启动服务,相对路径就会指向错误位置。建议使用__dirname拼接绝对路径,修改方案如下:

  1. 顶部引入path模块:const path = require('path')
  2. 修改文件读取代码:
fs.readFile(path.join(__dirname, './Docs/index.html'), (err, data) => {
    if(err){
        console.log(err)
        // 建议补充错误响应,避免请求挂起:res.status(500).send('读取文件失败')
    }else{
        res.send(data);
    }
})
  • 冗余路由可直接移除
    你已经配置了app.use(express.static('Docs')),Express的static中间件默认会自动返回对应目录下的index.html作为根路径响应,不需要额外写自定义路由手动读取文件。如果没有其他特殊需求,直接删掉整个app.get('/')的自定义路由即可直接正常访问。

内容的提问来源于stack exchange,提问作者Waris Alokozay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:15:00