Ich folge zusammen mit: The Node Beginner Book
Nach dem Testen mit dem Code aus einem anderen SO-Beitrag:
var Fs = require('fs');
var dirs = ['tmp'];
var index;
var stats;
for (index = 0; index < dirs.length; ++index)
{
try
{
stats = Fs.lstatSync(dirs[index]);
console.log(dirs[index] + ": is a directory? " + stats.isDirectory());
}
catch (e)
{
console.log(dirs[index] + ": " + e);
}
}
Der Fehler bleibt bestehen:
Fehler: ENOENT, keine solche Datei oder kein solches Verzeichnis 'tmp'
Die Berechtigungen für tmp sind 777.
requestHandlers.js
var querystring = require("querystring"),
fs = require("fs");
function start(response, postData) {
console.log("Request handler 'start' was called.");
var body = '<html>'+
'<head>'+
'<meta http-equiv="Content-Type" '+
'content="text/html; charset=UTF-8" />'+
'<style>input{display: block; margin: 1em 0;}</style>'+
'</head>'+
'<body>'+
'<form action="/upload" method="post">'+
'<textarea name="text" rows="20" cols="60"></textarea>'+
'<input type="submit" value="Submit text" />'+
'</form>'+
'</body>'+
'</html>';
response.writeHead(200, {"Content-Type": "text/html"});
response.write(body);
response.end();
}
function upload(response, postData) {
console.log("Request handler 'upload' was called.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("You've sent the text: "+
querystring.parse(postData).text);
response.end();
}
function show(response, postData) {
console.log("Request handler 'show' was called.");
fs.readFile("/tmp/test.jpg", "binary", function(error, file) {
if(error) {
response.writeHead(500, {"Content-Type": "text/plain"});
response.write(error + "\n");
response.end();
} else {
response.writeHead(200, {"Content-Type": "image/jpg"});
response.write(file, "binary");
response.end();
}
});
}
exports.start = start;
exports.upload = upload;
exports.show = show;
Index.js
var server = require("./server");
var router = require("./router");
var requestHandlers = require("./requestHandlers");
var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;
handle["/show"] = requestHandlers.show;
server.start(router.route, handle);
Ein wenig ratlos, jede Hilfe geschätzt.
process.cwd()
?Antworten:
"/tmp/test.jpg"
ist nicht der richtige Pfad - dieser Pfad beginnt mit/
dem Stammverzeichnis.Unter Unix lautet die Verknüpfung zum aktuellen Verzeichnis
.
Versuche dies
"./tmp/test.jpg"
quelle
/tmp
ist anders als./tmp
./tmp
befindet sich nicht im aktuellen Verzeichnis, sondern im Stammverzeichnis.Um ein wenig zu erläutern, warum der Fehler aufgetreten ist: Ein Schrägstrich am Anfang eines Pfads bedeutet "Beginnen Sie am Stammverzeichnis des Dateisystems und suchen Sie nach dem angegebenen Pfad". Kein Schrägstrich bedeutet "Beginnen Sie mit dem aktuellen Arbeitsverzeichnis und suchen Sie nach dem angegebenen Pfad".
Der Weg
Dies bedeutet, dass die Datei test.jpg im Ordner tmp im Stammverzeichnis des Dateisystems (z. B. c: \ unter Windows, / unter * nix) anstelle des Ordners webapp gesucht wird . Das Hinzufügen eines Punkts (.) Vor dem Pfad ändert dies explizit in "Start aus dem aktuellen Arbeitsverzeichnis", entspricht jedoch im Wesentlichen dem vollständigen Weglassen des Schrägstrichs.
quelle
Wenn sich Ihr tmp-Ordner relativ zu dem Verzeichnis befindet, in dem Ihr Code ausgeführt wird, entfernen Sie das
/
vor/tmp
.Sie haben also nur
tmp/test.jpg
Ihren Code. Das hat bei mir in einer ähnlichen Situation funktioniert.quelle
Sie können Ihrer Vorlage eine andere Jadedatei hinzufügen, die aus einem anderen Verzeichnis stammt
So fügen Sie die Layoutdatei aus dem Ansichtsverzeichnis in static / page.jade ein
page.jade
quelle
Veränderung
zu
quelle
Verwenden Sie "temp" anstelle von "tmp".
"/temp/test.png"
Es funktionierte für mich, nachdem mir klar wurde, dass tmp ein temporärer Ordner ist, der auf meinem Computer nicht vorhanden war, aber mein temporärer Ordner war mein temporärer Ordner
///
BEARBEITEN:
Ich habe auch einen neuen Ordner "tmp" in meinem Laufwerk C: erstellt und alles hat perfekt funktioniert. Das Buch hat es möglicherweise versäumt, diesen kleinen Schritt zu erwähnen
Besuchen Sie http://webchat.freenode.net/?channels=node.js, um mit einigen Mitgliedern der node.js-Community zu chatten
quelle