2014-02-26 93 views
2

我想Node.js的閱讀form.html時域名爲localhost:3000 /形式,但由於某些原因,它總是給我一個錯誤頁500。Node.js的fs.ReadFile總是返回錯誤

在fs.readFile的回調函數的內容參數會不確定,即使該文件的路徑是正確的。

app.get('/form', function(req, res){ 
    fs.readFile('/form.html', function(error, content){ 
     if(error){ 
      // This get's always executed... I don't know why. 
      // content = undefined. 
      res.writeHead(500); 
      res.end(); 
     } 
     else{ 
      res.writeHead(200, { 'content-type' : 'text/html' }); 
      processFile(content); 
      res.end(content, 'utf-8'); 
     } 
    }); 
}); 

添加錯誤消息:

{ [Error: ENOENT, open 'C:\form.html'] errno: 34, code: 'ENOENT', path: 'C:\form.html' }

我必須指定文件的完整路徑...?

我刪除了之後/我得到這樣的路徑:

C:\Users\deno_000\form.html

我的文件都在同一目錄下,並在我的編輯器的左側,你可以看到它:

http://i59.tinypic.com/2eqdp2o.jpg

+2

如果您記錄錯誤並在此處發佈錯誤消息,這將有所幫助。 – prattsj

+0

也 - 只是一個猜測,但也許它是'./form.html',除非在根 – bryanmac

+0

奧克我添加了錯誤信息,看起來像我必須指定完整的路徑? –

回答

2

/在大多數文件系統中=根目錄。

要麼刪除/,要麼添加一個點,如form.html./form.html

.是當前目錄

..被父目錄

./form.html = [current directory]/form.html]

該錯誤是類似於文件沒有找到。

HTML文件將需要在同一個文件夾中的.js節點文件這個工作。如果你在另一個路徑中,使用該路徑。 \

注意你也可以使用:

路徑#

穩定性:3 - 穩定 此模塊包含處理和轉換文件路徑工具。幾乎所有這些方法都只執行字符串轉換。沒有查閱文件系統來檢查路徑是否有效。

使用require('path')來使用此模塊。

http://nodejs.org/api/path.html

+0

刪除/帶我到C:\\ Users \\ deno_000 \\ form.html –

+0

是的最後編輯提到你的路徑可能是錯誤的格式,期望* nix路徑,但Windows風格的路徑給出。 – Mouseroot

+0

本地文件系統上的form.html在哪裏?是C:\\ Users \\ deno_000 \\ .js節點文件在哪裏? – Adam

0

有同樣的問題。用__dirname修復了它。