Node.js - res.sendFile - 错误:ENOENT,stat - 即使路径正确

时间:2015-08-29 16:24:30

标签: node.js express path

这是我的文件夹结构:

  • 根文件夹
    • ...
    • ...
      • ...
    • app.js
    • escape_iframe.html
    • ...

来自app.js我正在做的事情:

res.sendFile('escape_iframe.html' , {root : __dirname});

我得到的错误是:

Error: ENOENT, stat '/app/escape_iframe.html'

我猜这是一种可怕的方式,说在提供的路径中找不到该文件?

无论如何,正如您所知,我只想提供一个sibling app.js的文件(这是res.sendFile(...调用的文件格式)

我也尝试过:res.sendFile('escape_iframe.html');我得到了:path must be absolute or specify root to res.sendFile

我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用.指定的路径相对于当前工作目录,而不是相对于脚本文件。因此,如果您运行节点app.js,则可能会找到该文件,但如果您运行节点文件夹/ app.js则不会找到该文件。

要创建相对于脚本的路径,必须使用__dirname变量。

res.sendFile(__dirname + '/path/to/escape_iframe.html');

答案 1 :(得分:1)

.指定的路径与路径相关,任意数量的正斜杠都被截断为单斜杠。当进程node filename.js无法找到文件名时,您可能会收到此错误。 https://nodejs.org/api/errors.html#errors_enoent_no_such_file_or_directory

我的建议是::

var path = require('path')
//process.cwd() returns the current directory of the project
res.sendFile(process.cwd(),'/path/to/escape_iframe.html');