Node.js 为节点中安装的网络驱动器设置路径
我正在尝试使用windows网络驱动器模块和fs模块写入映射的网络驱动器输入节点 如何获取连接和写入远程位置的路径 我需要通过驱动器号吗?如果是,我如何找到它 节点:4796未处理PromisejectionWarning: ChildProcessError:命令失败:网络使用Z:\server/P:Yes/user:username密码 发生系统错误67 找不到网络名称 net use Z:\server/p:Yes/user:username密码已退出,错误代码为2 在回调C:\app\location\node\u modules\child process promise\lib\index.js:33:27 在ChildProcess.exithandler child_process.js:279:5 在ChildProcess.emit events.js:159:13 在maybeClose internal/child_process.js:943:16 在Process.ChildProcess.\u handle.onexit internal/child\u Process.js:220:5 名称:“ChildProcessError”, 代码:2,, 子进程: {ChildProcess:{[Function:ChildProcess]super:[Function]}, fork:[函数], _forkChild:[函数], exec:[函数], execFile:[函数], spawn:[函数], spawnSync:[函数:spawnSync], execFileSync:[函数:execFileSync], execSync:[函数:execSync]}, 标准输出:, stderr:'发生系统错误67。\r\n\r\n找不到网络名。\r\n\r\n'} 另外,该代码记录了ZNode.js 为节点中安装的网络驱动器设置路径,node.js,networking,fs,Node.js,Networking,Fs,我正在尝试使用windows网络驱动器模块和fs模块写入映射的网络驱动器输入节点 如何获取连接和写入远程位置的路径 我需要通过驱动器号吗?如果是,我如何找到它 节点:4796未处理PromisejectionWarning: ChildProcessError:命令失败:网络使用Z:\server/P:Yes/user:username密码 发生系统错误67 找不到网络名称 net use Z:\server/p:Yes/user:username密码已退出,错误代码为2 在回调C:\app\l
networkDrive.mount('\\\\server\\path\\to\\directory', 'Z', 'mdadmin', 'Password1!')
.then(function (driveLetter) {
console.log(driveLetter);
fs.writeFile('L_test.txt', 'list', (err) => {
if (err) throw err
})
});
我不确定你得到了什么错误,所以这里有一些提示,当你使用 转义特殊字符 Windows使用\分隔目录。在JavaScript字符串中,并且必须像这样转义\\。e、 g.C:\file.txt将是字符串形式的C:\\file.txt 如果可以,请使用POSIX分隔符 由于读取带有转义\的路径会增加难度,我建议使用/来代替。windows网络驱动器应该可以处理这两个问题。e、 g.C:\file.txt将是字符串形式的C:/file.txt 范例 我试图使这个匹配您的示例,但做了一些更改,以便它可以在任何windows计算机上运行
let networkDrive = require("windows-network-drive");
/**
* https://github.com/larrybahr/windows-network-drive
* Mount the local C: as Z:
*/
networkDrive.mount("\\\\localhost\\c$", "Z", undefined, undefined)
.then(function (driveLetter)
{
const fs = require("fs");
const path = require("path");
let filePath;
/**
* This will create a file at "Z:\message.txt" with the contents of "text"
* NOTE: Make sure to escape '\' (e.g. "\\" will translate to "\")
*/
filePath = path.join(driveLetter + ":\\", "message.txt");
fs.writeFile(filePath, "text", (err) =>
{
if (err) throw err;
console.log('The file has been saved!');
});
});
要从IIS中托管的REST服务进行写入,需要在服务器上正确设置权限 您需要设置站点的应用程序池的标识。 您需要授予写入权限,才能将该帐户或帐户组与您尝试写入的文件夹相匹配。 注意:如果通过操作系统将文件夹映射到网络驱动器号,则它仅在用户帐户级别定义 因此,如果已将文件夹位置映射到驱动器号(在本例中为“X:”),而不是写入 您必须写入完整路径
fs.writeFile('\\\\servername\\path\\to\\director\\test.txt', 'text', (err) => {
if (err) throw err
})
注意:反斜杠需要转义,因此Windows文件系统将显示\\servername\path\to\directory之类的内容
注意:此答案包括用户l-bahr和CTZNKANE25的建议。OK。我更新了问题以反映您的建议。如何访问已装入的驱动器的路径?请查看find方法。今天晚些时候,我将发布一个示例,但是您应该使用find来查看驱动程序是否已安装。如果不是他们,你就骑上去。两者都将使您能够获取驱动器号。从这里开始编写文件,就像我在示例中所做的那样。从错误日志来看,您的起始斜杠数似乎不正确。应该是。。。Z:\\server/P。。。我可以在运行单元测试脚本时编写文件,但在REST服务器上运行时遇到问题。我可能在Windows IIS中遇到问题。我已向项目中添加了一个,这可能会有所帮助。如果您仍然有问题,请使用实际代码和您遇到的错误更新您的问题。在上次更新中,驱动器似乎正在安装。只要您有权限,就应该能够使用fs来写入文件。
fs.writeFile('X:/test.txt', 'text', (err) => {
if (err) throw err
})
fs.writeFile('\\\\servername\\path\\to\\director\\test.txt', 'text', (err) => {
if (err) throw err
})