ubuntuusers.de

Probleme mit NodeJS und Screen

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.10 (Groovy Gorilla)
Antworten |

BierGarten100

Anmeldungsdatum:
31. Juli 2016

Beiträge: 3

Hallo zusammen,

ich habe da eine Frage bezüglich meiner NodeJs Scripte. Auf meinem Computer W10 funktionieren diese mit der PowerShell, allerdings wenn ich die auf meinen Server hochlade und "node app.js" mache, wird der jeweilige Bot gestartet aber wenn ein Befehl im Bot verarbeitet werden soll, zeigt er viele Fehler und führt den Befehl nicht aus. (wie gesagt in der PowerShell geht es aber)

und dann ist ein weiteres Problem der Screen command... Wenn ich eine "start.sh" anfertige mit folgendem Inhalt:

1
screen -A -m -d -S Bot2 node app.js

oder halt

1
screen -mdS Bot2 node app.js

theoretisch ja egal meiner Meinung nach, öffnet sich kein weiterer Screen. Es läuft aber mit dem selben Befehl in der "start.sh" schon Bot1. Manuell kann ich den Screen mit dem Bot2 starten. Die start.sh sowie die app.js haben 777 rechte schon bekommen, auch wenn bei Bot1 nur die start.sh das bekommen musste. Bin halt maximal verwirrt warum das nicht mehr automatisch geht.

Und vorallem bin ich Maximal verwirrt warum auf meinem Computer in der PowerShell meine Bots laufen ohne Probleme aber halt nicht auf meinem Server. (Wohlgemerkt Bot1 (Twitch Bot) der funktioniert | Bot2 (Discord Bot) der nicht)

Hoffe jemand kann mir bei dem komplizierten Problem Helfen.

Hier noch mal kurz der Fehler, der bei Bot2 kommt (Discord Bot):

[17.12.2020 | 22:46:51] Erfolgreich eingeloggt als
Bot2#7784
(node:10577) UnhandledPromiseRejectionWarning: TypeError: fields.flat is not a function
    at Function.normalizeFields (/home/projekte/Bot2/node_modules/discord.js/src/structures/MessageEmbed.js:450:8)
    at MessageEmbed.setup (/home/projekte/Bot2/node_modules/discord.js/src/structures/MessageEmbed.js:78:91)
    at new MessageEmbed (/home/projekte/Bot2/node_modules/discord.js/src/structures/MessageEmbed.js:18:10)
    at embedLikes.map.e (/home/projekte/Bot2/node_modules/discord.js/src/structures/APIMessage.js:166:40)
    at Array.map (<anonymous>)
    at APIMessage.resolveData (/home/projekte/Bot2/node_modules/discord.js/src/structures/APIMessage.js:166:31)
    at TextChannel.send (/home/projekte/Bot2/node_modules/discord.js/src/structures/interfaces/TextBasedChannel.js:166:62)
    at Message.reply (/home/projekte/Bot2/node_modules/discord.js/src/structures/Message.js:602:25)
    at sendData1 (/home/projekte/Bot2/app.js:99:9)
    at exports.XMLHttpRequest.http.onload (/home/projekte/Bot2/app.js:165:9)
(node:10577) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:10577) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Info: Rein theoretisch ist der Bot aber nix anderes als Bot1 (Twitch Bot). Ich verstehe also nicht warum da so ein Fehler kommt. :/ Das einzige was sich da ändert ist von "tmi.js" zu "discord.js" und halt das Login von "oauth:xyz" zu "token" etc. Code ist aber so ziemlich der selbe.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

BierGarten100 schrieb:

Ich verstehe also nicht warum da so ein Fehler kommt. :/ Das einzige was sich da ändert ist von "tmi.js" zu "discord.js"

Und wenn man da in den Bugtracker schaut discordjs/discord.js/issues/3910, dann würde ich vermuten, dass deine node-Version zu alt ist - laut discordjs/discord.js muss das mindestens Version 14 sein. Diese Version oder ein aktuelleres Release bekommt man z.B. als Snap aus den entsprechenden Kanälen (vgl. https://snapcraft.io/node) oder man installiert node an der Paketverwaltung vorbei..

BierGarten100

(Themenstarter)

Anmeldungsdatum:
31. Juli 2016

Beiträge: 3

Ok das hat auf jeden fall mein Problem bezüglich der "discord.js" gelöst. Er spuckt keine Fehler mehr aus. Danke dir.

Jetzt nur noch das Problem mit dem Screen. Bot1 startet mit der "start.sh" und dem oben erwähnten Command normal.

Bot2 mit dem selben Command aber einen anderen Screen Namen nicht mehr... Warum?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11261

Wohnort: München

BierGarten100 schrieb:

Ok das hat auf jeden fall mein Problem bezüglich der "discord.js" gelöst. Er spuckt keine Fehler mehr aus. Danke dir.

Jetzt nur noch das Problem mit dem Screen. Bot1 startet mit der "start.sh" und dem oben erwähnten Command normal.

Bot2 mit dem selben Command aber einen anderen Screen Namen nicht mehr... Warum?

Was gibt der Bot2 denn an (Fehler)meldungen zurück (z.B. stdout und stderr in eine Datei umleiten lassen)? Und warum braucht man da screen? Hat das Bot ein CLI-Interface oder gibt es einen Grund, weshalb der nicht von einer Systemd (User-)Unit gestartet wird, was den Vorteil hätte, dass man z.B. Ausgabe auf stdout und stderr der Prozesse bequem automatisiert ins journal umleiten lassen könnte?

Antworten |