【问题标题】:Discord.js bot not going online using HerokuDiscord.js 机器人无法使用 Heroku 上线
【发布时间】:2022-01-10 05:28:43
【问题描述】:

我刚开始使用 JS 编写一个机器人,使用 Discord.js 和 Heroku 来托管它

在 Heroku 上构建成功,但不会上线。我按照 Heroku 的要求使用 dotenv

我使用 npm 安装了 dotenv,这是我的 dotenv 代码:

require('dotenv').config();
console.log(process.env.DISCORD_TOKEN);

console.log(process.env.DISCORD_TOKEN) 在控制台中返回undefined

这是我的 .env 文件:

DISCORD_TOKEN = OTI2M...

这就是我在代码中使用DISCORD_TOKEN 的地方:

const token = process.env.DISCORD_TOKEN;

client.login(token);

本地编译失败​​:

Error [TOKEN_INVALID]: An invalid token was provided.

在 Heroku 上它构建成功但不是在本地使用 node index.js

这是 Heroku 的控制台日志,我确定我在 Heroku 中正确配置了环境变量

-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/nodejs
-----> Node.js app detected
       
-----> Creating runtime environment
       
       NPM_CONFIG_LOGLEVEL=error
       NODE_VERBOSE=false
       NODE_ENV=production
       NODE_MODULES_CACHE=true
       
-----> Installing binaries
       engines.node (package.json):  unspecified
       engines.npm (package.json):   unspecified (use default)
       
       Resolving node version 14.x...
       Downloading and installing node 14.18.2...
       Using default npm version: 6.14.15
       
-----> Restoring cache
       - node_modules
       
-----> Installing dependencies
       Installing node modules (package.json)
       audited 132 packages in 0.767s
       
       18 packages are looking for funding
         run `npm fund` for details
       
       found 0 vulnerabilities
       
       
-----> Build
       
-----> Caching build
       - node_modules
       
-----> Pruning devDependencies
       audited 132 packages in 0.791s
       
       18 packages are looking for funding
         run `npm fund` for details
       
       found 0 vulnerabilities
       
       
-----> Build succeeded!
-----> Discovering process types
       Procfile declares types     -> worker
       Default types for buildpack -> web
-----> Compressing...
       Done: 69.7M
-----> Launching...
       Released v15

我错过了什么?

【问题讨论】:

    标签: node.js heroku discord discord.js


    【解决方案1】:

    我按照 Heroku 的要求使用 dotenv

    我不确定你的意思。 Heroku 没有这样的要求。在开发中使用可以很方便,但是Heroku使用config vars进行配置。

    好消息是 dotenv 和 config vars 做同样的事情:填充environment variables。您引用的代码 process.env.DISCORD_TOKEN 读取 DISCORD_TOKEN 环境变量。

    您似乎缺少的唯一步骤是将您的DISCORD_TOKEN 设置在 Heroku 端。您可以在命令行上设置 Heroku 配置变量,e.g.

    heroku config:set DISCORD_TOKEN=some_token_value
    

    using the web-based dashboard

    请注意,您的 .env 文件不应在您的存储库中进行跟踪。仅用于本地开发。

    【讨论】:

    • 感谢反馈,我使用基于 Web 的仪表板设置令牌的配置变量:KEY = DISCORD_TOKEN 和 VALUE = 令牌。我应该从我的代码中删除“const token = process.env.DISCORD_TOKEN”吗?为什么它不能在本地正确构建?
    • 为什么我的控制台使用 console.log(process.env.DISCORD_TOKEN) 返回“未定义”?
    • 不行,你需要使用process.env.DISCORD_TOKEN读取环境变量。我不知道您第二条评论的上下文,但假设您的意思是在 Heroku 上,这可能是因为您没有将该值 设置 作为配置变量。而且我不知道为什么它在本地不起作用。请一次问一个问题。您目前是在 本地 还是在 Heroku 上尝试实现此功能?您问题中的构建日志建议后者。
    • 第二条评论来自我的控制台,而不是来自 Heroku。在 Heroku 上构建部署成功。
    • @Davide,所以你的问题是如何让这个工作本地
    猜你喜欢
    • 2021-07-11
    • 2021-08-17
    • 2020-06-27
    • 2021-11-10
    • 2021-05-04
    • 2021-07-14
    • 2019-02-16
    • 2021-12-05
    • 2019-09-23
    相关资源
    最近更新 更多