【问题标题】:fs.readfile error claiming "no such file" for filepath that does existfs.readfile 错误为确实存在的文件路径声明“没有这样的文件”
【发布时间】:2015-10-06 02:24:15
【问题描述】:

我正在尝试使用 fs.readFile 验证文件是否存在。但是,我收到一条错误消息,告诉我一个绝对存在的 URL 不存在。

这是控制台中的错误以及我机器上的 Windows 资源管理器中打开的路径:http://i.imgur.com/cC9bSnL.png

这是我的代码:

fs.readFile(url, "utf8", function (error, data) {
      if (error){
            //saveContentError(url);
            throw error;
      } 
});

message: "ENOENT: no such file or directory, open 'C:\Users\my-name\AppData\Roaming\Company%20Name\DashboardApps\Apps\eCatalog\Contents\Product Groups\order.csv'"
path: "C:\Users\my-name\AppData\Roaming\Company%20Name\DashboardApps\Apps\eCatalog\Contents\Product Groups\order.csv"

我也尝试将url 更改为url = url.replace(' ', '%20')

这是来自我的 app.js,它的根目录与我的节点文件夹不同。最初这是一个问题,因为我只是通过了路径的末尾并将其添加到错误的根目录。但是,由于我现在将完整路径传递给它(从 C 开始:)我认为这将纠正该问题。

有谁知道为什么我被告知不存在文件,而实际上它确实存在?

非常感谢您的宝贵时间。如果我不清楚或者您需要更多信息,请告诉我。

【问题讨论】:

  • 节点进程可能无权读取文件,报不存在。

标签: javascript node.js path readfile fs


【解决方案1】:

不要使用\ 创建路径,而是使用/\\。后者因为\是转义字符,使用前需要转义->\\才能使用\

例如\n 是换行符...所以您发送的是奇怪的请求,而不是正确的路径...

【讨论】:

  • 我在读取文件调用之前添加了url = url.replace('\\', '/');,但我仍然遇到同样的错误。在调试器中,抛出错误时的 URL 是 C:/Users/my-name/AppData/Roaming/Company Name/DashboardApps/Apps/eCatalog/Contents/Product Groups/order.csv。这看起来正确吗?任何想法为什么它仍然显示no such file?感谢您与我们联系。
  • 在前面添加'file:///'?我建议不要使用间距并尽量避免使用 -,而是使用 _ 代替......因为 Windows 搞砸了东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多