通过 UNC 路径使用 fs 读取/写入节点中的文件

Posted

技术标签:

【中文标题】通过 UNC 路径使用 fs 读取/写入节点中的文件【英文标题】:Read/Writing files in node with fs via UNC path 【发布时间】:2015-06-07 12:25:03 【问题描述】:

在我的本地计算机上遇到reading/writing 到带有nodeJs 的UNC 路径的问题。在某一时刻fs 可以从我的机器读/写到 UNC 路径,但现在看来它无法读/写。

UNC 路径: \\[machine name]\folder1\folder2\file.csv

不久前我升级到节点版本 12,并认为可能存在网络路径错误,但没有看到任何人在线受到影响。然后我使用nvmw 加载了旧版本的节点,但仍然没有。

我想知道是不是因为我没有加入同一个域,但是,以前这不是问题。我可以ping盒子,在Windows资源管理器中访问,远程进入。

我尝试以管理员身份运行我的应用程序,在凭据管理器中为网络管理员添加了 Windows 凭据。

尝试更改用于权限的标志rr+aa+0666...

尝试过的路径

\\[machine name]\ \\?\[machine name]\ \\?\UNC\[machine name]\

写入错误

 
  [Error: UNKNOWN, mkdir '\\[machine name]\Storage\CSV\Example.csv']
  errno: -4094,
  code: 'UNKNOWN',
  path: '\\[machine name]\Storage\CSV\Example.csv' 

读取错误

 
  [Error: UNKNOWN, open '\\[machine name]\Storage\CSV\Example.csv']
  errno: -4094,
  code: 'UNKNOWN',
  path: '\\[machine name]\Storage\CSV\Example.csv' 

我已经浏览了很多实际的 fs 代码,它似乎最终会生成适当的路径,但似乎与用于访问 UNC 路径的窗口不兼容。

我希望有人能给我一些要检查的事情或可能的原因。

【问题讨论】:

可能相关:github.com/joyent/node/issues/8821#issuecomment-77834980 不确定。我最终删除了虚拟网络连接......并完全重置了我的网络适配器,突然间它被备份并写入文件。我不知道这些是否修复了它。尝试弄清楚这是一件糟糕的事情 我也遇到了这个问题,但我可以使用它已经映射到的驱动器(尽管添加一个并不难) 你的意思是你在节点0.12上?试试 7... 现在可以修复了吗? 【参考方案1】:

正如您在 node 中所知道的,反斜杠是转义字符,因此您需要将使用的反斜杠数量加倍。对于:

\\machine name\folder1\folder2\filename.ext

尝试:

\\\\machine name\\folder1\\folder2\\filename.ext

【讨论】:

答案是什么?在问题中,他已经在使用双反斜杠了! 对不起,没有看到编辑模式下的答案与显示模式不同。我在编辑模式下修改了答案以正确显示

以上是关于通过 UNC 路径使用 fs 读取/写入节点中的文件的主要内容,如果未能解决你的问题,请参考以下文章

Node 读取 + 写入 + 路径问题

如何在 Java 中检查文件大小而不从 UNC 路径读取文件?

nodeJS文件流和事件

node 文件操作 读取,写入 目录的写入读取 文件流 写入流 管道流 压缩 解压

您可以在 Windows 中禁用 UNC 路径吗?

如何从节点中的ReadStream同步读取