"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

node.js per cronjob bringt mich zur Verzweiflung

UnleashThebeast 07.07.2018 - 23:53 2371 7
Posts

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3543
Hallo,

Folgendes Problem:

Ich hab eine index.js in /home/pi/Raspberry-Pi-ESP8266-Weather-Logger

wenn ich die im Verzeichnis einfach via "node index.js" starte, funktioniert alles.

Will ich die jetzt als cron beim reboot starten und öffne sie dann im Browser krieg ich:

Code:
Error: Failed to lookup view "index" in views directory "/root/views"
    at Function.render (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/express/lib/application.js:580:17)
    at ServerResponse.render (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/express/lib/response.js:1008:7)
    at Query._callback (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/index.js:39:13)
    at Query.Sequence.end (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/sequences/Sequence.js:88:24)
    at Query._handleFinalResultPacket (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/sequences/Query.js:139:8)
    at Query.EofPacket (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/sequences/Query.js:123:8)
    at Protocol._parsePacket (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/Protocol.js:279:23)
    at Parser.write (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/Parser.js:76:12)
    at Protocol.write (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/node_modules/mysql/lib/Connection.js:103:28)

der cronjob:
Code:
@reboot sudo /usr/bin/node /home/pi/Raspberry-Pi-ESP8266-Weather-Logger/index.js &

was genau mach ich falsch? :/

the_shiver

500 ontopic posts in 10y!
Avatar
Registered: Nov 2002
Location: R'lyeh beach
Posts: 879
Zitat
Error: Failed to lookup view "index" in views directory "/root/views"
ich würd mal sagen das startet als root und unter /root/views/ gibts kein index.js (weil die config relativ vom benutzer nach dem file sucht)

JDK

Oberwortwart
Avatar
Registered: Feb 2007
Location: /etc/graz
Posts: 2828
Dein Express-Server sucht anscheinend im falschen Verzeichnis ("/root") nach der "index"-View.

Du müsstest entweder den Pfad per "app.set('views', '<PFAD>/views');" anpassen oder das Verzeichnis, in dem dein Node-Skript ausgeführt wird.

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3543
Es geht übrigens auch nicht, wenn ich das ding via crontab -e vom user starte, dann sucht er in /home/pi/views statt /home/pi/Raspberry-Pi-ESP8266-Weather-Logger/views, Jesus fucking Christ... Ich reiss das Ding jetzt einfach in einem Screen an und hoffe, dass der RPi nicht rebooten muss

//edit:
den Pfad per "app.set('views', '<PFAD>/views');" anpassen
yay, das geht, das Kreuwl rennt!
Allerdings schickt mir der ESP noch immer keine Daten in die Datenbank, und ich weiß nicht warum, weil ich mir die Responses die er vom node.js server kriegt im ESPlorer nicht anschauen kann? Ur nice :D
Bearbeitet von UnleashThebeast am 08.07.2018, 11:42

JDK

Oberwortwart
Avatar
Registered: Feb 2007
Location: /etc/graz
Posts: 2828
Zeig mal, was du da eingetragen hast als Pfad.

Debugging kannst dir einfach mit console.log() oder dem npm Modul "debug" basteln. Bei der Ausführung über einen Cronjob solltest den Output halt in ein File pipen.

Ansonsten kann ich dir "pm2" ans Herz legen, wenn es um das Management von Node-Skripten geht. Da kannst dein Skript im Fehler-Fall oder nachm Reboot auch wieder anstarten.

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3543
Code:
app.set('views', '/home/pi/Raspberry-Pi-ESP8266-Weather-Logger/views')
Das Node.js Zeug läuft jetzt mal so weit, hab auch versucht alles in ein logfile zu pipen direkt via dem cronjob, aber er schreibt mir nix ins logfile rein.

So wies ausschaut schickt mir der ESp8266 keine Daten, weil er den DHT22 nicht auslesen kann, ich versuch grad herauszufinden warum das so ist....

JDK

Oberwortwart
Avatar
Registered: Feb 2007
Location: /etc/graz
Posts: 2828
Meinte den Pfad bevor du ihn absolut gemacht hast. ^^

UnleashThebeast

Mr. Midlife-Crisis
Avatar
Registered: Dec 2005
Location: 127.0.0.1
Posts: 3543
??? Vorher stand die Zeile da garnicht drinnen, also wird er irgendwelche Pfade genommen haben. Ich kenn mich Stana aus mit node.js und will ganz ehrlich gesagt auch ned wirklich mehr damit zu tun haben. So wie mich das Klumpat jetzt 2 Tage geärgert hat faschier ichs einfach und werd direkt vom ESP8266 zu thingspeak oÄ loggen, das kostet mir weniger Lebenszeit.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz