我们正在开发一个 Electron JS 应用程序,它应该从服务器获取一个配置文件。这一直有效到一个小时前,但现在它“神奇地”抛出了一个权限错误。当我们尝试写入任何内容时,它会引发权限错误。以下是我们明确测试的内容:
- app.getPath('userData')
- “C:/测试”
- app.getAppPath()
我们尝试从管理员提升的 powershell 启动它,但仍然没有成功。这是我们的代码片段:
function canWrite(path, callback) {
fs.access(path, fs.W_OK, function (err) {
callback(null, !err);
});
}
function downloadFile(url, target, target_name) {
canWrite(target, function (err, isWritable) {
if (isWritable){
electronDl.download(
BrowserWindow.getFocusedWindow(),
url,
{
directory: target,
filename: target_name
}
)
console.log("Downloaded from: " + url + " to: " + target);
return true;
} else {
console.log("No permission to write to target");
return false;
}
});
}
downloadFile(REMOTEURL, app.getPath('userData'), 'sessionfile.json');
我们重写了这段代码,尝试更改文件名,尝试不使用文件名 (..),但现在有点想不通了。我们还实现了文件检查(文件是否存在),如果存在,则在执行此操作之前进行删除。我们现在将其注释掉以进行调试,因为它以前有效。
更新: 在有人指出外部检查非常无用后,我将代码更新为(仍然不起作用):
function downloadFile(url, target) {
electronDl.download(
BrowserWindow.getFocusedWindow(),
url,
{
directory: target,
}
)
}
downloadFile(REMOTEURL, "C:/test");