JavaScript Datei auslesen was mache ich falsch?
Ich weiß das es so nicht funktionieren kann aber wie geht es denn richtig???
Was mache ich falsch? Der Error ist :
Uncaught ReferenceError: require is not defined at Test.html:12:28
Mein Code
<!DOCTYPE html>
<html >
<head>
<title>Test</title>
</head>
<body>
</body>
<script>
const fs = require("fs");
fs.readFile("test.txt", (err, data) => {
if (err) throw err;
console.log(data.toString());
});
</script>
</html>
1 Antwort
Das geht nicht.
Irgendwie verwechselst Du da was...
Du verwendest ein Sprachelement aus Node.js in einer HTML-Datei im Browser.
Das JavaScript, welches im Browser verwendet wird, hat mit Node.js , JScript, JS.Net oder HTA nur einen großen Teil der Funktionalität gemein. Das im Browser ausführbare Javascript dient jedoch der dynamischen Steuerung von HTML und unterliegt den Sicherheitsbestimmungen für Browser:
Der Zugriff auf dass Dateisystem ist nicht gestattet. Da dies betreffende Funktionen mit den Sicherheitsanforderungen kollidieren würden, werden sie garnicht erst implementiert.
Node.js & Co verwenden JavaScript im Server-/Backendbereich oder als Compiler für Desktopprogramme. In diesem Bereich sind Dateisystemzugriffe wie in jeder andere Programmierersprache möglich.
Eine Ausnahme bildet HTA . Diese ist rur noch aus Kompatibilität im Windowssystem und erlaubte das Erstellen von GUI-Programmen mit HTML/VBS/JavaScript. (Das war die einzige offizielle Möglichkeit HTML mit Zugriff auf das Dateisystem zu verwenden.)
Das automatische öffnen einer Datei geht nicht.
Das "input type="file""-Formular ist eine Möglichkeit um einem Nutzer die bewusste Entscheidung zu überlassen , ob und welche Datei er an einen Server überträgt.
Dies beinhaltet jedoch nicht. das automatische clientseitige Öffnen Lesen des Inhalts der gewählten Datei. Die ausgewählte Datei wird vom Browser per "submit" an den Server gesendet, (soweit dieser für den Empfang von Dateien eingerichtet ist.) . Was dort auch immer mit der Datei geschieht, Clientseitig ist der Explizite Wunsch des Nutzers nötig, um eine Datei zu senden!
Eine andere Sache ist ein XMLHttpRequest. Dieser bietet die Möglichkeit auf Dateien zu laden, welche auf einem Sever gespeichert sind und diese in einer Webseite Clientseitig zu verarbeiten.
- https://wiki.selfhtml.org/wiki/JavaScript/XMLHttpRequest
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?retiredLocale=de
Wenn Du Clientseitig irgendwelche, in der Webseite ermittelten Daten speichern/laden möchtest, kannst Du neben den guten alten Cookies auch local Storage nutzen.
- https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?retiredLocale=de
- https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage?retiredLocale=de
...wenn Du dich gewundert haben solltest, weshalb du auf "GuteFrage" etwas ins Editorfenster schreiben kannst (ohne es abzuschicken) , und nach schließen des Fenster ist beim erneuten öffnen dein angefangener Text immer noch da, so ist das genau "localStorage", welches den eingegebenen Tex speichert und wieder einliest.
doch das geht da bin ich mir sicher mein Chef hatte mir gestern kurz seinen Quellcode dazu gezeigt und da war ganz klar zu sehen das er nur den Pfad angegeben hat mit readfile(); usw. aber ich hab leider kein Fotografisches gesächnis und konnte es mir nicht so schnell merken
keine Ahnung was dein Chef da geköchelt hat... jedenfalls kein Html.
möglicherweise ein Node.js-Script für ein Backend auf dem Server?
Bei Node.js muss ich passen. (Ich bin zwar vielseitig und Html/JavaScript ist eine Sprache in meinem Spectrum , aber irgendwo muss ich Grenzen ziehen)
Dann wars ein Node.js-Script.
wie gesagt du darfst das nicht mit HTML/Javascript in einen Topf werfen.
Ja. Node.js verwendet .js Dateien. Hat aber trotzdem nichts mit HTML zu tun.
ok das hab ich nach googlen auch gerade rausbekommen aber wie mache ich es denn richtig? Ich habe eine Variante eine .txt Datei auszulesen mit in HTML input type file. Aber ich will kein Auswahlfenster ich will gleich den ganzen Pfad angeben nur für eine Datei aber wie?