【问题标题】:Node.js, can't open files. Error: ENOENT, stat './path/to/file'Node.js,无法打开文件。错误:ENOENT,stat './path/to/file'
【发布时间】:2012-11-12 13:52:23
【问题描述】:

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

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

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

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

有什么想法吗?

【问题讨论】:

  • 由于路径是相对的,也许您是从不同的目录运行它?您如何生成路径以及目录结构是什么?你是如何运行节点的?
  • 谢谢,是的,我从不同的目录运行脚本,并愚蠢地认为文件路径是脚本本身的相对路径。我知道这很简单:)
  • 应该是可以修复的。您能否添加一些代码来显示您如何制作路径以及您希望它解决的问题?如果您希望它与特定文件相关,通常您会这样做 __dirname + 'path/to/file';
  • 是的,这就是我现在所做的。我通过执行“node ~/path/to/script.js”运行脚本,并期望脚本中对文件的相对引用解析为“~/path/to”谢谢!

标签: node.js express


【解决方案1】:

. 指定的路径是相对于当前工作目录的,而不是相对于脚本文件的。因此,如果您运行 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')

【讨论】:

    【解决方案2】:

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

    输入指定文件名

    res.download(__dirname+'/'+input);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 2022-11-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多