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

使用Heroku部署Discord机器人遇模块找不到问题求助

问题:Heroku部署Discord机器人时出现MODULE_NOT_FOUND错误

首次尝试将Discord机器人部署到Heroku,代码已成功推送至应用,但添加config.json的token并启动worker后出现报错:

2022-10-23T04:55:31.815878+00:00 app[Worker.1]: Node.js v18.11.0
2022-10-23T04:55:31.927217+00:00 heroku[Worker.1]: Process exited with status 1
2022-10-23T04:55:31.983366+00:00 heroku[Worker.1]: State changed from up to crashed
2022-10-23T04:55:31.986264+00:00 heroku[Worker.1]: State changed from crashed to starting
2022-10-23T04:55:34.526205+00:00 heroku[Worker.1]: Starting process with command `node ./src/bot.js`
2022-10-23T04:55:35.356859+00:00 heroku[Worker.1]: State changed from starting to up
2022-10-23T04:55:36.599794+00:00 heroku[Worker.1]: Process exited with status 1
2022-10-23T04:55:36.413725+00:00 app[Worker.1]: node:internal/modules/cjs/loader:998
2022-10-23T04:55:36.413733+00:00 app[Worker.1]:   throw err;
2022-10-23T04:55:36.413733+00:00 app[Worker.1]:   ^
2022-10-23T04:55:36.413733+00:00 app[Worker.1]: 
2022-10-23T04:55:36.413734+00:00 app[Worker.1]: Error: Cannot find module '/app/src/bot.js'
2022-10-23T04:55:36.413734+00:00 app[Worker.1]:     at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
2022-10-23T04:55:36.413735+00:00 app[Worker.1]:     at Module._load (node:internal/modules/cjs/loader:841:27)
2022-10-23T04:55:36.413735+00:00 app[Worker.1]:     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
2022-10-23T04:55:36.413735+00:00 app[Worker.1]:     at node:internal/main/run_main_module:23:47 {
2022-10-23T04:55:36.413748+00:00 app[Worker.1]:   code: 'MODULE_NOT_FOUND',
2022-10-23T04:55:36.413749+00:00 app[Worker.1]:   requireStack: []
2022-10-23T04:55:36.413749+00:00 app[Worker.1]: }
2022-10-23T04:55:36.413755+00:00 app[Worker.1]: 
2022-10-23T04:55:36.413755+00:00 app[Worker.1]: Node.js v18.11.0
2022-10-23T04:55:36.653228+00:00 heroku[Worker.1]: State changed from up to crashed

当前项目的package.json配置:

{
  "name": "mudbot",
  "version": "1.0.0",
  "description": "MUDbot",
  "main": "bot.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Shirish Sarkar",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^14.5.0",
    "env": "^0.0.2"
  }
}

解决方法

经过排查,问题由两个原因导致,修正后机器人可正常运行:

  • 修正Procfile路径:报错显示无法找到/app/src/bot.js,说明Procfile中的启动命令路径与实际文件位置不匹配。根据package.json中main字段为bot.js,可知文件在根目录,因此将Procfile中的命令改为node bot.js。

  • 替换config.json为.env环境变量:Heroku更适合使用环境变量管理敏感信息,而非本地的config.json:

    1. 安装dotenv依赖:
      npm install dotenv
      
    2. 在项目根目录创建.env文件,添加:
      DISCORD_TOKEN=你的机器人Token
      
      同时将.env加入.gitignore,避免提交到代码仓库。
    3. 在bot.js中引入并加载环境变量:
      require('dotenv').config();
      // 使用时通过process.env.DISCORD_TOKEN获取Token
      
    4. 登录Heroku控制台,进入对应应用的「设置」页面,在「配置变量」中添加DISCORD_TOKEN,填入机器人的Token值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39