2014-02-26 43 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修复了它。