Estoy siguiendo junto con: The Node Beginner Book
Después de probar con el código de otra publicación 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);
}
}
El error persiste:
Error: ENOENT, no existe tal archivo o directorio 'tmp'
Los permisos en tmp son 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 poco perplejo, se agradece cualquier ayuda.
process.cwd()
?Respuestas:
"/tmp/test.jpg"
no es la ruta correcta; esta ruta comienza con/
cuál es el directorio raíz.En unix, el acceso directo al directorio actual es
.
Prueba esto
"./tmp/test.jpg"
fuente
/tmp
es diferente de./tmp
./tmp
no está en el directorio actual, está en el directorio raíz.Para expandir un poco por qué ocurrió el error: una barra inclinada al comienzo de una ruta significa "comenzar desde la raíz del sistema de archivos y buscar la ruta dada". Sin barra diagonal significa "comenzar desde el directorio de trabajo actual y buscar la ruta dada".
El camino
por lo tanto, se traduce en buscar el archivo test.jpg en la carpeta tmp en la raíz del sistema de archivos (por ejemplo, c: \ en Windows, / en * nix), en lugar de la carpeta de la aplicación web . Agregar un punto (.) Delante de la ruta cambia explícitamente esto para que diga "comenzar desde el directorio de trabajo actual", pero es básicamente lo mismo que dejar la barra inclinada completamente fuera.
fuente
si su carpeta tmp es relativa al directorio donde se ejecuta su código, elimine el
/
frente de/tmp
.Así que solo tienes
tmp/test.jpg
en tu código. Esto funcionó para mí en una situación similar.fuente
Puede incluir un archivo jade diferente en su plantilla, desde un directorio diferente
views/ layout.jade static/ page.jade
Para incluir el archivo de diseño desde el directorio de vistas a static / page.jade
page.jade
extends ../views/layout
fuente
cambio
"/tmp/test.jpg".
a
"./tmp/test.jpg"
fuente
use "temp" en lugar de "tmp"
"/temp/test.png"
funcionó para mí después de darme cuenta de que el tmp es una carpeta temporal que no existía en mi computadora, pero mi temperatura era mi carpeta temporal
///
EDITAR:
También creé una nueva carpeta "tmp" en mi unidad C: y todo funcionó perfectamente. Es posible que el libro no haya mencionado ese pequeño paso
echa un vistazo a http://webchat.freenode.net/?channels=node.js para charlar con algunos miembros de la comunidad de node.js
fuente