【问题标题】:Use node js to access a local network drive使用 node js 访问本地网络驱动器
【发布时间】:2016-04-22 15:12:53
【问题描述】:

NodeJs 在 fs/io 操作方面非常出色,但我无法使用它来访问共享(用于存储)本地网络驱动器。

filesystem.writeFile('\\192.168.1.1\test.txt', 'data!', function(error){ ... });

我得到了 UNKNOWN_ERROR 这没有帮助!上面的 IP 可以通过资源管理器(我在 Windows 上)毫无问题地访问,并且可写(对于我的 windows 用户)。

这里有什么问题?!

【问题讨论】:

    标签: javascript node.js fs electron


    【解决方案1】:

    请记住,在 JavaScript 字符串文字中,\ 是一个转义字符。您要求写入的实际文件名是\192.168.1.1<tab>est.txt(其中<tab> 表示制表符),因为\\ => \\t => 制表符。

    要使用字符串文字在字符串中添加反斜杠,您需要将其转义(使用反斜杠):

    filesystem.writeFile('\\\\192.168.1.1\\test.txt', 'data!', function(error){ ... });
    

    【讨论】:

    • 这足以触发 SMB 访问吗?因为modules exist 是为了这个目的,所以我没想到会这样。
    • @Quentin:这足以移交给操作系统的文件 API,它们从那里获取它。因此,访问他们尝试访问的内容是否足够取决于他们的环境。该路径对我来说看起来很狡猾,因为它以双反斜杠和服务器名称(在本例中为 IP)开头,但后面没有共享名称。我希望\\server-or-ip\share\path(例如"\\\\server-or-ip\\share\\path")。但我对 SMB 的了解就这么多了……
    • @Quentin:刚刚在 Windows 机器上尝试过。是的,只要路径正确就足够了。
    • @Dewan159:首先要做的是检查路径。您似乎正在使用 Windows(文件路径中的反斜杠是赠品)。通常我希望这样的 SMB 路径是\\server-or-ip\sharename\path,而不仅仅是\\server-or-ip\path。所以我的第一步是打开命令提示符并执行dir \\192.168.1.1\test.txt 并查看是否出现错误。如果我没有,我会做echo "foo" > \\192.168.1.1\test.txt 看看写作是否有问题。
    • @Dewan159:我再次敦促您检查路径,因为路径非常可疑。无论如何,NodeJS 部分(现在)是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    相关资源
    最近更新 更多