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

Discord.js配合forever服务端启动报错TOKEN_INVALID,process.env读取失效

问题根因

报错本质是dotenv未正确加载指定的配置文件,导致process.env.TOKEN为undefined,触发discord.js的TOKEN_INVALID错误。本地运行正常是因为本地执行node命令的工作目录与配置文件所在目录匹配,服务端用forever启动时工作目录不匹配,相对路径寻址失败。

排查步骤
  • 加入调试代码确认加载状态:在dotenv.config行后追加打印语句,确认文件是否加载成功:
console.log('当前工作目录:', process.cwd())
const loadResult = dotenv.config({ path: './process.env' })
console.log('env加载结果:', loadResult)

如果loadResult存在error字段,即可确认是配置文件路径错误导致读取失败。

  • 确认配置文件存在性:检查服务端项目目录下是否存在process.env文件,排除.gitignore规则过滤导致文件未上传的情况。
修复方案

方案1:改用绝对路径定位配置文件(推荐)

使用__dirname基于入口文件位置定位配置文件,不受启动时工作目录影响,修改加载代码如下:

const dotenv = require('dotenv');
const path = require('path');
// 以当前入口文件所在目录为基准寻址
dotenv.config({ path: path.join(__dirname, './process.env') });

const username = process.env.IGUSERNAME
const password = process.env.IGPASSWORD
const TOKEN = process.env.TOKEN

// 前置校验避免无效启动
if (!TOKEN || typeof TOKEN !== 'string') {
  throw new Error('TOKEN加载失败,请检查env配置文件')
}
client.login(TOKEN);

方案2:启动forever时明确指定工作目录

先cd到项目根目录(即process.env文件所在目录)后再执行启动命令:

cd /你的/项目/根目录/绝对路径
forever start ig.js

也可以直接通过--workingDir参数指定工作目录:

forever --workingDir /你的/项目/根目录/绝对路径 start ig.js

方案3:优化配置文件命名(可选)

dotenv默认自动加载项目根目录下的.env文件,你当前使用process.env作为文件名容易和node全局process.env变量混淆,建议重命名配置文件为.env,修改后dotenv.config()无需指定path参数即可自动加载,降低出错概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:51:01