Javascript Heroku帮助:等待进程终止时出错:无子进程

Javascript Heroku帮助:等待进程终止时出错:无子进程,javascript,node.js,heroku,Javascript,Node.js,Heroku,首先我要道歉,因为我是一个彻头彻尾的傻瓜 我为Discord创建了一个JS机器人,为我们的TTRPG小组玩Weave掷骰子 bot在我的pc上运行正常,在Heroku上的GitHub上运行几分钟,然后抛出一个错误:等待进程终止时出错:无子进程 日志: 2020-05-14T06:08:44.097216+00:00 app[web.1]: > node index.js 2020-05-14T06:08:44.097217+00:00 app[web.1]: 2020-05-14T06:

首先我要道歉,因为我是一个彻头彻尾的傻瓜

我为Discord创建了一个JS机器人,为我们的TTRPG小组玩Weave掷骰子

bot在我的pc上运行正常,在Heroku上的GitHub上运行几分钟,然后抛出一个错误:
等待进程终止时出错:无子进程

日志:

2020-05-14T06:08:44.097216+00:00 app[web.1]: > node index.js
2020-05-14T06:08:44.097217+00:00 app[web.1]: 
2020-05-14T06:09:42.647001+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-14T06:09:42.651315+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-14T06:09:46.654014+00:00 app[web.1]: 
2020-05-14T06:09:46.654028+00:00 app[web.1]: > discordweavedicebot@1.0.0 start /app
2020-05-14T06:09:46.654028+00:00 app[web.1]: > node index.js
2020-05-14T06:09:46.654029+00:00 app[web.1]: 
2020-05-14T06:10:44.626907+00:00 app[web.1]: Error waiting for process to terminate: No child processes
2020-05-14T06:10:44.707304+00:00 heroku[web.1]: State changed from starting to crashed
worker node index.js
{
  "name": "discordweavedicebot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "eddgue",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^12.2.0"
  }
}
const Discord = require('discord.js');
const bot = new Discord.Client();

const dieFaces = ["Fail","Brook","Gale","Stone","Flame","Weave"];

bot.on('message', (message) => {
    if(message.content == '!Roll 1' || message.content == '!roll 1' || message.content == '!Roll1' || message.content == '!roll1' || message.content == '!R1' || message.content == '!r1'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 2' || message.content == '!roll 2' || message.content == '!Roll2' || message.content == '!roll2' || message.content == '!R2' || message.content == '!r2'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 3' || message.content == '!roll 3' || message.content == '!Roll3' || message.content == '!roll3' || message.content == '!R3' || message.content == '!r3'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 4' || message.content == '!roll 4' || message.content == '!Roll4' || message.content == '!roll4' || message.content == '!R4' || message.content == '!r4'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 5' || message.content == '!roll 5' || message.content == '!Roll5' || message.content == '!roll5' || message.content == '!R5' || message.content == '!r5'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 6' || message.content == '!roll 6' || message.content == '!Roll6' || message.content == '!roll6' || message.content == '!R6' || message.content == '!r6'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }
})

bot.login('XXXXXXXXXXXXX');
我添加了一个procfile,使index.js成为工作者(根据另一个线程上的建议)

procfile:

2020-05-14T06:08:44.097216+00:00 app[web.1]: > node index.js
2020-05-14T06:08:44.097217+00:00 app[web.1]: 
2020-05-14T06:09:42.647001+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-14T06:09:42.651315+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-14T06:09:46.654014+00:00 app[web.1]: 
2020-05-14T06:09:46.654028+00:00 app[web.1]: > discordweavedicebot@1.0.0 start /app
2020-05-14T06:09:46.654028+00:00 app[web.1]: > node index.js
2020-05-14T06:09:46.654029+00:00 app[web.1]: 
2020-05-14T06:10:44.626907+00:00 app[web.1]: Error waiting for process to terminate: No child processes
2020-05-14T06:10:44.707304+00:00 heroku[web.1]: State changed from starting to crashed
worker node index.js
{
  "name": "discordweavedicebot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "eddgue",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^12.2.0"
  }
}
const Discord = require('discord.js');
const bot = new Discord.Client();

const dieFaces = ["Fail","Brook","Gale","Stone","Flame","Weave"];

bot.on('message', (message) => {
    if(message.content == '!Roll 1' || message.content == '!roll 1' || message.content == '!Roll1' || message.content == '!roll1' || message.content == '!R1' || message.content == '!r1'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 2' || message.content == '!roll 2' || message.content == '!Roll2' || message.content == '!roll2' || message.content == '!R2' || message.content == '!r2'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 3' || message.content == '!roll 3' || message.content == '!Roll3' || message.content == '!roll3' || message.content == '!R3' || message.content == '!r3'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 4' || message.content == '!roll 4' || message.content == '!Roll4' || message.content == '!roll4' || message.content == '!R4' || message.content == '!r4'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 5' || message.content == '!roll 5' || message.content == '!Roll5' || message.content == '!roll5' || message.content == '!R5' || message.content == '!r5'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 6' || message.content == '!roll 6' || message.content == '!Roll6' || message.content == '!roll6' || message.content == '!R6' || message.content == '!r6'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }
})

bot.login('XXXXXXXXXXXXX');
package.json:

2020-05-14T06:08:44.097216+00:00 app[web.1]: > node index.js
2020-05-14T06:08:44.097217+00:00 app[web.1]: 
2020-05-14T06:09:42.647001+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-14T06:09:42.651315+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-14T06:09:46.654014+00:00 app[web.1]: 
2020-05-14T06:09:46.654028+00:00 app[web.1]: > discordweavedicebot@1.0.0 start /app
2020-05-14T06:09:46.654028+00:00 app[web.1]: > node index.js
2020-05-14T06:09:46.654029+00:00 app[web.1]: 
2020-05-14T06:10:44.626907+00:00 app[web.1]: Error waiting for process to terminate: No child processes
2020-05-14T06:10:44.707304+00:00 heroku[web.1]: State changed from starting to crashed
worker node index.js
{
  "name": "discordweavedicebot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "eddgue",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^12.2.0"
  }
}
const Discord = require('discord.js');
const bot = new Discord.Client();

const dieFaces = ["Fail","Brook","Gale","Stone","Flame","Weave"];

bot.on('message', (message) => {
    if(message.content == '!Roll 1' || message.content == '!roll 1' || message.content == '!Roll1' || message.content == '!roll1' || message.content == '!R1' || message.content == '!r1'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 2' || message.content == '!roll 2' || message.content == '!Roll2' || message.content == '!roll2' || message.content == '!R2' || message.content == '!r2'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 3' || message.content == '!roll 3' || message.content == '!Roll3' || message.content == '!roll3' || message.content == '!R3' || message.content == '!r3'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 4' || message.content == '!roll 4' || message.content == '!Roll4' || message.content == '!roll4' || message.content == '!R4' || message.content == '!r4'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 5' || message.content == '!roll 5' || message.content == '!Roll5' || message.content == '!roll5' || message.content == '!R5' || message.content == '!r5'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 6' || message.content == '!roll 6' || message.content == '!Roll6' || message.content == '!roll6' || message.content == '!R6' || message.content == '!r6'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }
})

bot.login('XXXXXXXXXXXXX');
index.js:

2020-05-14T06:08:44.097216+00:00 app[web.1]: > node index.js
2020-05-14T06:08:44.097217+00:00 app[web.1]: 
2020-05-14T06:09:42.647001+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-14T06:09:42.651315+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-14T06:09:46.654014+00:00 app[web.1]: 
2020-05-14T06:09:46.654028+00:00 app[web.1]: > discordweavedicebot@1.0.0 start /app
2020-05-14T06:09:46.654028+00:00 app[web.1]: > node index.js
2020-05-14T06:09:46.654029+00:00 app[web.1]: 
2020-05-14T06:10:44.626907+00:00 app[web.1]: Error waiting for process to terminate: No child processes
2020-05-14T06:10:44.707304+00:00 heroku[web.1]: State changed from starting to crashed
worker node index.js
{
  "name": "discordweavedicebot",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "eddgue",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^12.2.0"
  }
}
const Discord = require('discord.js');
const bot = new Discord.Client();

const dieFaces = ["Fail","Brook","Gale","Stone","Flame","Weave"];

bot.on('message', (message) => {
    if(message.content == '!Roll 1' || message.content == '!roll 1' || message.content == '!Roll1' || message.content == '!roll1' || message.content == '!R1' || message.content == '!r1'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 2' || message.content == '!roll 2' || message.content == '!Roll2' || message.content == '!roll2' || message.content == '!R2' || message.content == '!r2'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 3' || message.content == '!roll 3' || message.content == '!Roll3' || message.content == '!roll3' || message.content == '!R3' || message.content == '!r3'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 4' || message.content == '!roll 4' || message.content == '!Roll4' || message.content == '!roll4' || message.content == '!R4' || message.content == '!r4'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 5' || message.content == '!roll 5' || message.content == '!Roll5' || message.content == '!roll5' || message.content == '!R5' || message.content == '!r5'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }

    if(message.content == '!Roll 6' || message.content == '!roll 6' || message.content == '!Roll6' || message.content == '!roll6' || message.content == '!R6' || message.content == '!r6'){
        message.reply("You rolled: " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)] + ", " + dieFaces[Math.floor(Math.random() * 6)]);
    }
})

bot.login('XXXXXXXXXXXXX');
我认为有更干净的方法可以达到同样的效果,但考虑到我有限的编程经验,这是我能想到的最好的方法


任何帮助都将不胜感激

您的服务器需要监听heroku的端口,
我建议您这样做

var port = process.env.PORT || 8080;
或者你应该试着设置助行器

heroku ps:scale worker=0
heroku ps:scale worker=1

您的服务器需要监听heroku的端口,
我建议您这样做

var port = process.env.PORT || 8080;
或者你应该试着设置助行器

heroku ps:scale worker=0
heroku ps:scale worker=1

我认为您需要启动一个服务器并监听Helku在Env中分配给您的端口,否则Helku会考虑您的Web应用程序死机并终止它。我认为您需要启动服务器并监听端口Env中的Helku分配给您的端口。否则,Helku会考虑你的Web应用程序死掉并终止它。谢谢!我不再在等待进程终止时收到
错误:没有子进程
。但应用程序在几分钟后仍然崩溃。日志:
2020-05-14T12:43:19.727186+00:00应用程序[web.1]:2020-05-14T12:43:19.727204+00:00应用程序[web.1]:>discordweavedicebot@1.0.0start/app 2020-05-14T12:43:19.727204+00:00 app[web.1]:>node index.js 2020-05-14T12:43:19.727205+00:00 app[web.1]:2020-05-14T12:44:17.169097+00:00 heroku[web.1]:状态从开始更改为崩溃
我尝试设置助行器,但未成功,两个代码的结果相同<代码>Eduardos MBP:discord weave dice bot Eddgue$heroku ps:scale worker=0›警告:heroku更新可从7.35.0到7.41.1获得。缩放动态!▸ 找不到该进程类型(工作进程)。Eduardos MBP:discord weave dice bot Eddgue$heroku ps:scale worker=1›警告:heroku更新可从7.35.0到7.41.1进行。缩放动态!▸ 找不到该进程类型(工作进程)。是否在本地进行了测试?几分钟后它能正常工作而不崩溃吗?谢谢!我不再在等待进程终止时收到
错误:没有子进程
。但应用程序在几分钟后仍然崩溃。日志:
2020-05-14T12:43:19.727186+00:00应用程序[web.1]:2020-05-14T12:43:19.727204+00:00应用程序[web.1]:>discordweavedicebot@1.0.0start/app 2020-05-14T12:43:19.727204+00:00 app[web.1]:>node index.js 2020-05-14T12:43:19.727205+00:00 app[web.1]:2020-05-14T12:44:17.169097+00:00 heroku[web.1]:状态从开始更改为崩溃
我尝试设置助行器,但未成功,两个代码的结果相同<代码>Eduardos MBP:discord weave dice bot Eddgue$heroku ps:scale worker=0›警告:heroku更新可从7.35.0到7.41.1获得。缩放动态!▸ 找不到该进程类型(工作进程)。Eduardos MBP:discord weave dice bot Eddgue$heroku ps:scale worker=1›警告:heroku更新可从7.35.0到7.41.1进行。缩放动态!▸ 找不到该进程类型(工作进程)。是否在本地进行了测试?几分钟后它能正常工作而不崩溃吗?