Saya mengikuti bersama: The Node Beginner Book
Setelah menguji dengan kode dari posting SO lain:
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);
}
}
Kesalahan tetap ada:
Error: ENOENT, tidak ada file atau direktori 'tmp' seperti itu
Izin pada tmp adalah 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);
Sedikit bingung, bantuan apa pun dihargai.
process.cwd()
?Jawaban:
"/tmp/test.jpg"
bukan jalur yang benar - jalur ini dimulai dengan/
direktori root.Di unix, pintasan ke direktori saat ini adalah
.
Coba ini
"./tmp/test.jpg"
sumber
/tmp
berbeda dari./tmp
./tmp
tidak ada di direktori saat ini, melainkan di direktori root.Untuk menjelaskan sedikit mengapa kesalahan terjadi: Garis miring di awal jalur berarti "mulai dari root sistem file, dan cari jalur yang diberikan". Tidak ada garis miring berarti "mulai dari direktori kerja saat ini, dan cari jalur yang diberikan".
Jalan
sehingga diterjemahkan menjadi mencari file test.jpg di folder tmp di root sistem file (misalnya c: \ di windows, / di * nix), bukan di folder webapp . Menambahkan titik (.) Di depan jalur secara eksplisit mengubah ini menjadi "mulai dari direktori kerja saat ini", tetapi pada dasarnya sama dengan meninggalkan garis miring sepenuhnya.
sumber
jika folder tmp Anda relatif terhadap direktori tempat kode Anda berjalan, hapus
/
di depan/tmp
.Jadi, Anda hanya
tmp/test.jpg
memasukkan kode Anda. Ini berhasil bagi saya dalam situasi yang sama.sumber
Anda dapat menyertakan file giok yang berbeda ke dalam template Anda, dari direktori yang berbeda
views/ layout.jade static/ page.jade
Untuk memasukkan file layout dari views dir ke static / page.jade
page.jade
extends ../views/layout
sumber
perubahan
"/tmp/test.jpg".
untuk
"./tmp/test.jpg"
sumber
gunakan "temp" sebagai pengganti "tmp"
"/temp/test.png"
itu berfungsi untuk saya setelah saya menyadari tmp adalah folder sementara yang tidak ada di komputer saya, tetapi temp saya adalah folder sementara saya
///
EDIT:
Saya juga membuat folder baru "tmp" di drive C: saya dan semuanya bekerja dengan sempurna. Buku itu mungkin tidak menyebutkan langkah kecil itu
lihat http://webchat.freenode.net/?channels=node.js untuk mengobrol dengan beberapa komunitas node.js
sumber