"Das erste Argument muss eine Zeichenfolge oder ein Puffer sein" - Fehler beim Befolgen des Node.js-Tutorials von w3schools


Eduardo Venegas Island

Ich wollte lernen, wie ich mit Node.js meinen eigenen Webserver einrichte. Ich folgte dem Node.js-Tutorial von w3schools und es lief gut, bis ich zum Teil "Node.js File System" kam. (Ich weiß, gleich zu Beginn des Tutorials.)


Die Aufgabe besteht darin, zwei Dateien zu erstellen.

  1. demofile1.html
<html>
<body>
<h1>My Header</h1>
<p>My paragraph.</p>
</body>
</html>
  1. und demo_readfile.js :
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
  fs.readFile('demofile1.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    res.end();
  });
}).listen(8080);

Einfach genug, oder? Die .js-Datei soll lesen, was in der .html-Datei enthalten ist, und sie in Ihrem Browser anzeigen.

In den vorherigen Beispielen desselben Tutorials habe ich nur die Datei Whatever.js mit geladen node whatever.jsund localhost:8080in meinem Browser verwendet, um das Skript ohne Probleme auszuführen. In diesem Fall gibt Chrome jedoch nur die Meldung "Diese Site kann nicht erreicht werden (ERR_CONNECTION_REFUSED). "und es stürzt node.js mit folgendem Fehler ab:

_http_outgoing.js:642
    throw new TypeError('First argument must be a string or Buffer');
    ^

TypeError: First argument must be a string or Buffer
    at write_ (_http_outgoing.js:642:11)
    at ServerResponse.write (_http_outgoing.js:617:10)
    at ReadFileContext.callback (/home/eddo/nodejs_test/demo_readfile.js:6:9)
    at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:420:13)

Ich habe versucht, ein vergebliches Ergebnis res.write(data.toString());zu erzielen, und es so geändert, dass console.log(data);ich eine Konsolenausgabe von:

undefined
undefined

aber zumindest gab mir kein "Diese Seite kann nicht erreicht werden (ERR_CONNECTION_REFUSED)".

user835611

Ihr Dateipfad ist leicht ausgeschaltet:

fs.readFile('demofile1.html', function(err, data) {

Der Knoten sucht 'demofile1.html'im Ausgangsverzeichnis anstelle des aktuellen Verzeichnisses. Verwenden Sie stattdessen

fs.readFile('./demofile1.html', function(err, data) {

oder besser:

fs.readFile(__dirname + '/demofile1.html', function(err, data) {

Verwandte Artikel


Fehler beim Befolgen des FormFlow-Tutorials

Billdr Ich folge dem FormFlow-Tutorial unter http://docs.botframework.com/sdkreference/csharp/forms.html#simpleSandwichBot . Alles läuft gut, bis ich versuche hinzuzufügen OnCompletionAsyncDelegate<SandwichOrder> processOrder = async (context, state) =>

Fehler beim Befolgen des Zk-Essential-Tutorials

Dian.Y Ich bin ganz neu im ZKoss-Framework. Ich befolge das ZK-Essential-Tutorial und stecke in Kapitel 4 fest. Der Fehler tritt auf, wenn ich ein Paket / eine Klasse für SidebarChapter4Controller erstellt habe. Es gibt Zeilen: import org.zkoss.essentials.serv

Fehlermeldung beim Befolgen des Revit Design Automation-Tutorials

Santro Ich folge von hier aus dem Autodesk Forge Design Automation-Tutorial für Revit . Ich habe alle Schritte abgeschlossen, aber der letzte 7. Schritt gibt folgenden Fehler zurück: { "appbundles": [ "The App V0XRbvF7fj6glAh1PFwcG0s2680gZmTL.DeleteWallsAp