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
Anbei die Dateien zur Verdeutlichung. Es soll erstmal einfach beim Laden der Seite eine Datei geschrieben werden.
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.
@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.
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.
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: '' } |
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
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.