126

我在我的计算机上使用 express 框架开发了一个 node.js 程序,它运行良好,没有任何抱怨。

但是,当我在我的 SUSE Studio 设备上运行该程序时,我在任何文件交互时都会收到错误消息。

Error: ENOENT, stat './path/to/file'

我检查了文件权限是否正确,它们是正确的。如果这很重要,我的计算机和我的设备正在运行不同版本的节点。

有什么想法吗?

4

2 回答 2

188

用 a 指定的路径.是相对于当前工作目录的,而不是相对于脚本文件的。因此,如果您运行,则可能会找到该文件,node app.js但如果您运行node folder/app.js. 唯一的例外是require('./file'),这只是可能的,因为require每个模块都存在,因此知道它是从哪个模块调用的。

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

var path = require('path');

path.join(__dirname, 'path/to/file')

或可能

path.join(__dirname, 'path', 'to', 'file')
于 2012-11-24T17:32:56.960 回答
5

这里是使用你的 app.js 的代码

输入指定文件名

res.download(__dirname+'/'+input);
于 2013-08-24T04:57:55.863 回答