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

Heroku部署Node.js服务访问HTML页报ENOENT文件不存在错误如何解决

问题根因
  • 最常见原因:public目录或目录内的文件被.gitignore规则过滤,未提交到git,导致部署到Heroku的应用包内不存在对应文件。本地存在文件不代表已同步到部署环境,可执行heroku run bash进入Heroku实例,执行ls -la /app/public直接验证文件是否存在。
  • 大小写不匹配:Windows、macOS系统默认大小写不敏感,本地路径大小写不一致也可正常访问,但Heroku运行环境为大小写敏感的Linux系统,若实际目录/文件名(如Public、Index.html)和代码中引用的小写路径不一致,就会触发找不到文件的报错。
  • 配置文件拼写错误:Heroku要求进程配置文件必须为首字母大写的Procfile,若你使用小写的procfile会导致进程启动异常,也可能引发路径读取错误。
正确配置方案

首先先清理.gitignore中过滤public目录、.html文件的规则,重新提交所有文件后再部署,代码按如下写法配置即可:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 5000;
const path = require('path');

// 托管public目录下所有静态资源,css、js、html文件均可直接访问
app.use(express.static(path.join(__dirname, 'public')));

// 根路径返回index.html
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'index.html'));
});

app.listen(PORT, () => {
  console.log(`Listening on ${PORT}`);
});

完成配置后,index.html可通过根路径直接访问,home.html可直接通过/home.html路径访问,无需单独配置路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 00:06:07