Je suis avec: The Node Beginner Book
Après avoir testé avec le code d'un autre article SO:
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);
}
}
L'erreur persiste:
Erreur: ENOENT, aucun fichier ou répertoire 'tmp'
Les permissions sur tmp sont 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);
Un peu perplexe, toute aide appréciée.
process.cwd()
?Réponses:
"/tmp/test.jpg"
n'est pas le chemin correct - ce chemin commence par/
le répertoire racine.Sous unix, le raccourci vers le répertoire courant est
.
Essaye ça
"./tmp/test.jpg"
la source
/tmp
est différent de./tmp
./tmp
n'est pas dans le répertoire courant, c'est dans le répertoire racine.Pour expliquer un peu pourquoi l'erreur s'est produite: Une barre oblique au début d'un chemin signifie "partir de la racine du système de fichiers et chercher le chemin donné". Aucune barre oblique ne signifie "commencer à partir du répertoire de travail actuel et rechercher le chemin donné".
Le chemin
se traduit donc par la recherche du fichier test.jpg dans le dossier tmp à la racine du système de fichiers (par exemple c: \ sous windows, / sur * nix), au lieu du dossier webapp . Ajouter un point (.) Devant le chemin change explicitement cela pour lire "démarrer à partir du répertoire de travail courant", mais revient fondamentalement à laisser complètement la barre oblique.
la source
si votre dossier tmp est relatif au répertoire dans lequel votre code s'exécute, supprimez le
/
devant/tmp
.Donc, vous avez juste
tmp/test.jpg
dans votre code. Cela a fonctionné pour moi dans une situation similaire.la source
Vous pouvez inclure un fichier jade différent dans votre modèle, celui d'un autre répertoire
views/ layout.jade static/ page.jade
Pour inclure le fichier de mise en page des vues dir vers static / page.jade
page.jade
extends ../views/layout
la source
changement
"/tmp/test.jpg".
à
"./tmp/test.jpg"
la source
utilisez "temp" au lieu de "tmp"
"/temp/test.png"
cela a fonctionné pour moi après avoir réalisé que le tmp est un dossier temporaire qui n'existait pas sur mon ordinateur, mais ma temp était mon dossier temporaire
///
ÉDITER:
J'ai également créé un nouveau dossier "tmp" dans mon lecteur C: et tout fonctionnait parfaitement. Le livre a peut-être manqué de mentionner ce petit pas
consultez http://webchat.freenode.net/?channels=node.js pour discuter avec une partie de la communauté node.js
la source