使用其他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);
}
}
错误仍然存在:
错误:ENOENT,没有这样的文件或目录'tmp'
tmp的权限是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);
有点难过,任何帮助都赞赏。
答案 0 :(得分:87)
"/tmp/test.jpg"
不是正确的路径 - 此路径以/
开头,这是根目录。
在unix中,当前目录的快捷方式是.
试试这个"./tmp/test.jpg"
答案 1 :(得分:18)
为了解释错误发生的原因:在路径开头的正斜杠意味着“从文件系统的根开始,并查找给定的路径”。没有正斜杠意味着“从当前工作目录开始,并查找给定路径”。
路径
/tmp/test.jpg
因此转换为在文件系统根目录的tmp文件夹中查找文件 test.jpg (例如c:\ on windows,/ on * nix),而不是 webapp 文件夹。在路径前面添加句点(。)会明确地将其更改为“从当前工作目录开始”,但基本上与完全保留正斜杠相同。
./tmp/test.jpg = tmp/test.jpg
答案 2 :(得分:8)
如果您的tmp文件夹与运行代码的目录相关,请移除/
前面的/tmp
。
所以你的代码中只有tmp/test.jpg
。这在类似的情况下对我有用。
答案 3 :(得分:0)
您可以在模板中包含不同的jade文件,也可以在其他目录中包含
views/
layout.jade
static/
page.jade
将视图dir中的布局文件包含到static / page.jade
<强> page.jade 强>
extends ../views/layout
答案 4 :(得分:-6)
用“temp”代替“tmp”
“/温度/ test.png”
在我意识到tmp是我的计算机上不存在的临时文件夹后,它对我有用,但我的临时文件夹是我的临时文件夹
///
编辑:
我还在我的C:驱动器中创建了一个新文件夹“tmp”,一切都运行良好。这本书可能错过了那个小步骤
查看http://webchat.freenode.net/?channels=node.js与某些node.js社区聊天