Discord 机器人和 Heroku
Discord Bot and Heroku
您好,我的 discord 机器人需要一些帮助。我搜索了错误并尝试修复它,但它就是行不通。这可能是我的编码错误。请帮忙,谢谢!
Link 用于 GitHub 存储库:
https://github.com/Verggz/Electrolite
编辑:不断发生的错误
警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。
2022-01-23T15:14:15.475287+00:00 app[worker.1]: (Use `node --trace-warnings ...` to show where the warning was created)
2022-01-23T15:14:15.476783+00:00 app[worker.1]: /app/main.ts:1
2022-01-23T15:14:15.476784+00:00 app[worker.1]: import express from 'express';
2022-01-23T15:14:15.476785+00:00 app[worker.1]: ^^^^^^
2022-01-23T15:14:15.476785+00:00 app[worker.1]:
2022-01-23T15:14:15.476785+00:00 app[worker.1]: SyntaxError: Cannot use import statement outside a module
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at wrapSafe (internal/modules/cjs/loader.js:1001:16)
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at Module._compile (internal/modules/cjs/loader.js:1049:27)
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Module.load (internal/modules/cjs/loader.js:950:32)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Function.Module._load (internal/modules/cjs/loader.js:790:12)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
2022-01-23T15:14:15.476788+00:00 app[worker.1]: at internal/main/run_main_module.js:17:47
package.json:
{
"name": "electrolite",
"version": "0.0.1",
"description": "literally just project scyll v2 but better",
"main": "./build/main.js",
"scripts": {
"start": "node --max-old-space-size=512 ./build/main.js && export NODE_ENV=production",
"dev": "tsc && node ./build/main.js",
"bot": "node ./build/bot/main.bot.js",
"botdev": "tsc && node ./build/bot/main.bot.js"
},
"keywords": [
"minecraft"
],
"author": "PenguinDetox",
"license": "ISC",
"dependencies": {
"@discordjs/builders": "^0.11.0",
"@discordjs/rest": "^0.2.0-canary.0",
"axios": "^0.24.0",
"discord-api-types": "^0.26.1",
"discord.js": "^13.5.0",
"express": "^4.17.2",
"fs-extra": "^10.0.0",
"hypixel-api-reborn": "^9.0.3",
"prismarine-nbt": "^2.0.0",
"set-interval-async": "^2.0.3"
},
"devDependencies": {
"@types/express": "^4.17.13",
"@types/fs-extra": "^9.0.13",
"@types/node": "^17.0.4",
"@types/set-interval-async": "^1.0.0"
}
}
过程文件:
worker: node main.ts
我不太确定你想在这里做什么,但目前的主要问题是你要求 Heroku 运行 你的 TypeScript 代码,而不是编译后的 JavaScript。这是通过您的 Procfile
:
完成的
worker: node main.ts
您的 package.json
中有一个完全不同的命令:
"start": "node --max-old-space-size=512 ./build/main.js && export NODE_ENV=production",
这可能更接近你想要的,但我们不能就这样使用它。
&& export NODE_ENV
部分不太可能做任何有用的事情:它将等到您的代码停止 运行ning,然后导出环境变量,然后退出。让我们删除它:
"start": "node --max-old-space-size=512 ./build/main.js",
现在的问题是 build/main.js
不存在。您需要告诉 Heroku 在部署期间构建它。根据您的 dev
脚本,我相信只涉及 运行ning tsc
.
让我们添加一个构建脚本来执行此操作:
"build": "tsc",
"start": "node --max-old-space-size=512 ./build/main.js",
(我在你的 devDependencies
中没有看到 typescript
,这意味着 tsc
可能无法 运行。确保在你的 package.json
.)
好的,所以您的 build
脚本现在将告诉 Heroku 在部署期间构建您的应用程序并且您的 build/main.js
应该存在。您的 start
脚本已更新。
让我们来处理你的 Procfile
。更新它以匹配新的 start
脚本:
worker: node --max-old-space-size=512 ./build/main.js
提交所有这些更改并重新部署。
您好,我的 discord 机器人需要一些帮助。我搜索了错误并尝试修复它,但它就是行不通。这可能是我的编码错误。请帮忙,谢谢! Link 用于 GitHub 存储库: https://github.com/Verggz/Electrolite
编辑:不断发生的错误 警告:要加载 ES 模块,请在 package.json 中设置 "type": "module" 或使用 .mjs 扩展名。
2022-01-23T15:14:15.475287+00:00 app[worker.1]: (Use `node --trace-warnings ...` to show where the warning was created)
2022-01-23T15:14:15.476783+00:00 app[worker.1]: /app/main.ts:1
2022-01-23T15:14:15.476784+00:00 app[worker.1]: import express from 'express';
2022-01-23T15:14:15.476785+00:00 app[worker.1]: ^^^^^^
2022-01-23T15:14:15.476785+00:00 app[worker.1]:
2022-01-23T15:14:15.476785+00:00 app[worker.1]: SyntaxError: Cannot use import statement outside a module
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at wrapSafe (internal/modules/cjs/loader.js:1001:16)
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at Module._compile (internal/modules/cjs/loader.js:1049:27)
2022-01-23T15:14:15.476786+00:00 app[worker.1]: at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Module.load (internal/modules/cjs/loader.js:950:32)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Function.Module._load (internal/modules/cjs/loader.js:790:12)
2022-01-23T15:14:15.476787+00:00 app[worker.1]: at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
2022-01-23T15:14:15.476788+00:00 app[worker.1]: at internal/main/run_main_module.js:17:47
package.json:
{
"name": "electrolite",
"version": "0.0.1",
"description": "literally just project scyll v2 but better",
"main": "./build/main.js",
"scripts": {
"start": "node --max-old-space-size=512 ./build/main.js && export NODE_ENV=production",
"dev": "tsc && node ./build/main.js",
"bot": "node ./build/bot/main.bot.js",
"botdev": "tsc && node ./build/bot/main.bot.js"
},
"keywords": [
"minecraft"
],
"author": "PenguinDetox",
"license": "ISC",
"dependencies": {
"@discordjs/builders": "^0.11.0",
"@discordjs/rest": "^0.2.0-canary.0",
"axios": "^0.24.0",
"discord-api-types": "^0.26.1",
"discord.js": "^13.5.0",
"express": "^4.17.2",
"fs-extra": "^10.0.0",
"hypixel-api-reborn": "^9.0.3",
"prismarine-nbt": "^2.0.0",
"set-interval-async": "^2.0.3"
},
"devDependencies": {
"@types/express": "^4.17.13",
"@types/fs-extra": "^9.0.13",
"@types/node": "^17.0.4",
"@types/set-interval-async": "^1.0.0"
}
}
过程文件:
worker: node main.ts
我不太确定你想在这里做什么,但目前的主要问题是你要求 Heroku 运行 你的 TypeScript 代码,而不是编译后的 JavaScript。这是通过您的 Procfile
:
worker: node main.ts
您的 package.json
中有一个完全不同的命令:
"start": "node --max-old-space-size=512 ./build/main.js && export NODE_ENV=production",
这可能更接近你想要的,但我们不能就这样使用它。
&& export NODE_ENV
部分不太可能做任何有用的事情:它将等到您的代码停止 运行ning,然后导出环境变量,然后退出。让我们删除它:
"start": "node --max-old-space-size=512 ./build/main.js",
现在的问题是 build/main.js
不存在。您需要告诉 Heroku 在部署期间构建它。根据您的 dev
脚本,我相信只涉及 运行ning tsc
.
让我们添加一个构建脚本来执行此操作:
"build": "tsc",
"start": "node --max-old-space-size=512 ./build/main.js",
(我在你的 devDependencies
中没有看到 typescript
,这意味着 tsc
可能无法 运行。确保在你的 package.json
.)
好的,所以您的 build
脚本现在将告诉 Heroku 在部署期间构建您的应用程序并且您的 build/main.js
应该存在。您的 start
脚本已更新。
让我们来处理你的 Procfile
。更新它以匹配新的 start
脚本:
worker: node --max-old-space-size=512 ./build/main.js
提交所有这些更改并重新部署。