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

Heroku部署H10错误(503):找不到模块'./secrets.json'求助

Heroku部署H10错误(503状态码)排查与解决

核心问题分析

  • 错误根源:日志明确显示Error: Cannot find module './secrets.json',说明Heroku容器中server.js所在目录下不存在secrets.json文件
  • 关于/app/server.js:这是Heroku容器内部的应用根目录路径,并非你本地项目的app文件夹——Heroku会将你的项目代码部署到容器的/app目录下,所以本地根目录的server.js在容器内的路径就是/app/server.js,属于正常情况,和本地目录结构无关

可能的原因及解决方案

1. secrets.json被.gitignore忽略

如果项目克隆自远程仓库,大概率原仓库的.gitignore文件包含secrets.json(这类敏感配置文件通常不会被提交到Git),导致推送代码到Heroku时该文件未被上传。

  • 解决方案:
    • 检查本地项目根目录的.gitignore文件,确认是否存在secrets.json条目
    • 不要直接将secrets.json提交到Git,改用Heroku环境变量替代:
      1. 将secrets.json中的配置项(如数据库密钥、API密钥等)逐个添加到Heroku环境变量:
        heroku config:set KEY_NAME=对应值
        
      2. 修改server.js中读取配置的代码,从环境变量获取值,而非读取secrets.json:
        // 替换原有的require('./secrets.json')
        const secrets = {
          dbKey: process.env.DB_KEY,
          apiKey: process.env.API_KEY
          // 其他配置项依次对应
        };
        

2. 本地secrets.json路径存在隐性问题

虽然本地能正常运行,但相对路径可能因本地启动时的工作目录与Heroku容器内不同而出现问题。

  • 解决方案:使用绝对路径引用文件(仅在确定要推送secrets.json时使用,不推荐提交敏感文件):
    const path = require('path');
    const secrets = require(path.join(__dirname, 'secrets.json'));
    

3. 克隆仓库后本地缺少secrets.json

若克隆的仓库本身未包含secrets.json(原作者未提交),你本地自行创建的该文件未推送到Git,导致Heroku上没有该文件。

  • 解决方案:同上,优先使用Heroku环境变量管理敏感配置,避免提交该文件到版本库。

已尝试操作的补充说明

你之前进行的版本配置、Procfile设置、端口配置、数据库URL配置均无问题,与当前的MODULE_NOT_FOUND错误无关,无需调整。

完整Heroku日志

2023-07-01T19:42:53.159323+00:00 heroku[web.1]: State changed from crashed to starting
2023-07-01T19:42:56.049904+00:00 heroku[web.1]: Starting process with command `npm start`
2023-07-01T19:42:57.825975+00:00 app[web.1]: 
2023-07-01T19:42:57.826010+00:00 app[web.1]: > petition@1.0.0 start
2023-07-01T19:42:57.826010+00:00 app[web.1]: > node server.js
2023-07-01T19:42:57.826011+00:00 app[web.1]: 
2023-07-01T19:42:58.037800+00:00 app[web.1]: node:internal/modules/cjs/loader:1080
2023-07-01T19:42:58.037802+00:00 app[web.1]:   throw err;
2023-07-01T19:42:58.037802+00:00 app[web.1]:   ^
2023-07-01T19:42:58.037803+00:00 app[web.1]: 
2023-07-01T19:42:58.037803+00:00 app[web.1]: Error: Cannot find module './secrets.json'
2023-07-01T19:42:58.037803+00:00 app[web.1]: Require stack:
2023-07-01T19:42:58.037804+00:00 app[web.1]: - /app/server.js
2023-07-01T19:42:58.037804+00:00 app[web.1]:     at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
2023-07-01T19:42:58.037805+00:00 app[web.1]:     at Module._load (node:internal/modules/cjs/loader:922:27)
2023-07-01T19:42:58.037805+00:00 app[web.1]:     at Module.require (node:internal/modules/cjs/loader:1143:19)
2023-07-01T19:42:58.037805+00:00 app[web.1]:     at require (node:internal/modules/cjs/helpers:110:18)
2023-07-01T19:42:58.037805+00:00 app[web.1]:     at Object.<anonymous> (/app/server.js:15:34)
2023-07-01T19:42:58.037806+00:00 app[web.1]:     at Module._compile (node:internal/modules/cjs/loader:1256:14)
2023-07-01T19:42:58.037806+00:00 app[web.1]:     at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
2023-07-01T19:42:58.037806+00:00 app[web.1]:     at Module.load (node:internal/modules/cjs/loader:1119:32)
2023-07-01T19:42:58.037807+00:00 app[web.1]:     at Module._load (node:internal/modules/cjs/loader:960:12)
2023-07-01T19:42:58.037807+00:00 app[web.1]:     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
2023-07-01T19:42:58.037807+00:00 app[web.1]:   code: 'MODULE_NOT_FOUND',
2023-07-01T19:42:58.037808+00:00 app[web.1]:   requireStack: [ '/app/server.js' ]
2023-07-01T19:42:58.037808+00:00 app[web.1]: }
2023-07-01T19:42:58.037812+00:00 app[web.1]: 
2023-07-01T19:42:58.037812+00:00 app[web.1]: Node.js v18.16.1
2023-07-01T19:42:58.238635+00:00 heroku[web.1]: Process exited with status 1
2023-07-01T19:42:58.267875+00:00 heroku[web.1]: State changed from starting to crashed

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:14:59