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

部署在Heroku的Express应用打开时出现ERR_NAME_NOT_RESOLVED错误求助

问题分析与解决方案

1. 直接解决域名解析错误

Heroku默认应用域名格式为[应用名称].herokuapp.com,不支持www.前缀的子域名(仅自定义域名可配置www前缀的CNAME记录)。你当前访问的www.damp-garden-69923.herokuapp.com无效,正确访问地址应为:
damp-garden-69923.herokuapp.com

2. 修正端口监听逻辑

虽然代码中写了process.env.PORT || nconf.get('port'),但需确保以下两点:

  • Heroku会自动注入PORT环境变量,服务必须监听该动态分配的端口,不能依赖硬编码端口
  • 修复server变量未声明的全局变量风险,同时添加启动日志便于排查:
import http from 'http';
import express from 'express';
import pagesRouter from './routes/pages';
import nconf from 'nconf';

const app = express();

app.use(pagesRouter);

const port = process.env.PORT || nconf.get('port');

// 声明server变量,添加启动日志
const server = http.createServer(app);
server.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

3. 优化Dockerfile配置

调整Dockerfile的工作目录和端口声明,避免潜在环境歧义:

FROM node:18.12.1
# 使用规范工作目录,避免当前目录冲突
WORKDIR /app
COPY . .
ENV NODE_ENV production
RUN npm ci
RUN npm run build
RUN npm prune --production
# 动态适配Heroku的PORT环境变量
EXPOSE ${PORT:-6001}
CMD ["npm", "run", "start"]

4. 确认Heroku部署状态

通过Heroku GUI完成以下检查:

  • 进入「Deploy」标签,确认最新部署显示「Deployed successfully」
  • 进入「Resources」标签,确认web进程处于「Running」状态(进程崩溃也可能导致域名无法访问)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:57:37