Forum: PC-Programmierung Webprogrammierung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dennis S. (eltio)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

auf einem Server laufen einige Dienstprogramme, die ich per Website 
konfigurierien möchte. Das ganze kann in einer einfachen Textdatei 
passieren. Jetzt fehlt mir leider ein bisschen der Überblick über die 
vielen verschiedenen Technologien.

Ich würde das gerne mit Node.js versuchen. Unter [1] ist beschrieben, 
wie ich auf das Dateisystem zugreife. Unter [2], wie ich einen Server 
starte. Mir fehlt nun irgendwie die Verbindung zwischen den beiden.

Ich nehmen an ich muss im HTML-File "irgendwie" die 
Javascript-Funktionen aufrufen, diese werden jedoch nicht gefunden.

Kann mir jemand einen Tipp geben?

Viele Grüße
Dennis

[1] https://www.tutorialspoint.com/nodejs/nodejs_file_system.htm
[2] https://www.tutorialspoint.com/nodejs/nodejs_web_module.htm

von Dennis S. (eltio)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei die Dateien zur Verdeutlichung. Es soll erstmal einfach beim Laden 
der Seite eine Datei geschrieben werden.

von Irgendwer (Gast)


Bewertung
-3 lesenswert
nicht lesenswert
Du solltest dir erstmal klar werden wo du überhaupt was verändern willst 
- Client oder Server.

javascript ist Cientseitig.
Wenn du auf deinem Server irgendwas verändern willst ist her PHP oder 
ähnliches dein freund.

von TestX (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Irgendwer
NodeJS ist serverseitig

@elito
schau dir mal express.js an - das ist eine Middleware für NodeJS die 
einem bei sowas helfen kann.

Generell muss du einen Controller für den HTTP Server schreiben, der die 
von dir gewünschten Aufgaben umsetzt. Hier ist auch die frage was du 
genau machen willst.

von Dennis S. (eltio)


Bewertung
0 lesenswert
nicht lesenswert
Irgendwer schrieb:
> Du solltest dir erstmal klar werden wo du überhaupt was verändern
> willst
> - Client oder Server.
>
> javascript ist Cientseitig.
> Wenn du auf deinem Server irgendwas verändern willst ist her PHP oder
> ähnliches dein freund.

Im Prinzip soll es trotz Javascript auf dem Server verändert werden. 
Dank Node.js ist das ja auch machbar. Mir fehlt nur einfach die 
Verbindung zwischen den beiden Modulen ("Filesystem" und "Web Module").

Danke für deine Antwort.

von Dennis S. (eltio)


Bewertung
0 lesenswert
nicht lesenswert
Okay, nochmal ein Nachtrag. Die Konsolen-Ausgabe ist
1
Server running at http://127.0.0.1:8081/
2
Request for / received.
3
{ Error: ENOENT: no such file or directory, open ''
4
    at Error (native) errno: -4058, code: 'ENOENT', syscall: 'open', path: '' }

von Md M. (Firma: Potilatormanufaktur) (mdma)


Bewertung
0 lesenswert
nicht lesenswert
http://127.0.0.1:8081/index.htm geht. Allerdings benutzt du deine 
main_write.js falsch, diese wird nämlich wieder clientseitig benutzt. 
Das siehst du, wenn du im Browser die JavaScript console aufmachst. 
Unter Chromium mit Ctrl+Shift+J.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Bewertung
0 lesenswert
nicht lesenswert
Verstehst du den Code? Entscheidend ist hierzu zunächst die Stelle:
1
   // Read the requested file content from file system
2
   fs.readFile(pathname.substr(1), function (err, data) {
Wenn du im Browser http://127.0.0.1:8081/ eingibst, dann enthält 
pathname '/'. pathname.substr(1) gibt pathname ohne das erste Zeichen 
zurück, also ''. fs.readFile versucht also im cwd (Current Working 
Directory) eine Datei mit Namen '' zu öffnen. Eine Datei ohne Namen kann 
nicht existieren, wird somit nicht gefunden, und du bekommst deine 
Fehlermeldung. Versuche im Browser http://127.0.0.1:8081/index.htm 
aufzurufen, und stelle sicher, dass du den Server in dem Verzeichnis 
gestartet hast, in welchem sich die index.htm befindet. 
pathname.substr(1) von '/index.htm' wäre dann 'index.htm' und es würde 
im cwd die datei index.htm ausgelesen.

Es sollte beachtet werden, dass url.parse den Pfad nicht normalisiert, 
mit telnet kann man so eigentlich immer Dateien abfragen, die Entwickler 
eigentlich nicht zugänglich machen wollten. z.B. könnte man hier mit 
telnet den Pfad //etc/passwd angeben, und das pathname.substr(1) würde 
zu /etc/passwd. Schon hätte ich die Benutzeraccounts. Dann noch 
//etc/shadow runterladen, und ich kann die Passwort hashs durchs 
Wörterbuch jagen. 
https://www.tutorialspoint.com/execute_nodejs_online.php?PID=0Bw_CjBb95KQMSFRoSUQ3cWt5SzQ

von Md M. (Firma: Potilatormanufaktur) (mdma)


Bewertung
0 lesenswert
nicht lesenswert
Md M. schrieb:
> Allerdings benutzt du deine
> main_write.js falsch, diese wird nämlich wieder clientseitig benutzt.

Oder klarer: alles aus deiner main_write.js muss in die server.js mit in 
den else-Zweig.

von Dennis S. (eltio)


Bewertung
0 lesenswert
nicht lesenswert
Okay.. verstanden!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.