簡體   English   中英

節點JS錯誤:ENOENT

[英]Node JS Error: ENOENT

我跟着: Node Beginner Book

使用另一個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'

app目錄結構

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);

有點難過,任何幫助贊賞。

"/tmp/test.jpg"不是正確的路徑 - 此路徑以/根目錄開頭。

在unix中,當前目錄的快捷方式是.

試試這個"./tmp/test.jpg"

為了解釋錯誤發生的原因:在路徑開頭的正斜杠意味着“從文件系統的根開始,並查找給定的路徑”。 沒有正斜杠意味着“從當前工作目錄開始,並查找給定路徑”。

路徑

/tmp/test.jpg

因此轉換為在文件系統根目錄的tmp文件夾中查找文件test.jpg (例如c:\\ on windows,/ on * nix),而不是webapp文件夾。 在路徑前面添加句點(。)會明確地將其更改為“從當前工作目錄開始”,但基本上與完全保留正斜杠相同。

./tmp/test.jpg = tmp/test.jpg

如果您的TMP文件夾是相對於您的代碼運行刪除目錄/前面/tmp

所以你的代碼中只有tmp/test.jpg 在類似的情況下,這對我有用。

您可以在模板中包含不同的jade文件,也可以在不同的目錄中包含該文件

views/
     layout.jade
static/
     page.jade

要將視圖dir中的布局文件包含到static / page.jade中

page.jade

extends ../views/layout

更改

"/tmp/test.jpg".

"./tmp/test.jpg"

用“temp”代替“tmp”

“/temp/test.png”

在我意識到tmp是我的計算機上不存在的臨時文件夾之后,它對我有用,但我的臨時文件夾是我的臨時文件夾

///

編輯:

我還在我的C:驅動器中創建了一個新文件夾“tmp”,一切都運行良好。 這本書可能錯過了那一小步

查看http://webchat.freenode.net/?channels=node.js與某些node.js社區聊天

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM