尝试使用Electron应用程序中的节点fs的不同方法创建新文件时出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用Electron应用程序中的节点fs的不同方法创建新文件时出错相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个新文件,但下面的两个方法都给我一个错误:
method 1:
fs.writeFile(fullPath, '', (error) => { alert("exist") })
- 如果存在具有指定名称的文件:console抛出
exist
- 如果不存在具有指定名称的文件:控制台抛出
exist
并创建该文件
method 2:
if (!fs.existsSync(fullPath)) {
fs.appendFile(fullPath)
} else {
alert("exist")
}
- 如果存在具有指定名称的文件:console抛出
exist
- 如果具有指定名称的文件不存在:它创建文件并给我这个错误
DeprecationWarning: Calling an asynchronous function without callback is deprecated.
题:
我究竟做错了什么?
更新:
我也尝试过以下答案中建议的这种方法:
// fullPath= 'C:/Users/Name/test.txt'
fs.writeFile(fullPath, '', (error) => {
if(error) {
alert("exist")
return
}
alert("created")
})
我明白了
- 如果存在具有指定名称的文件:console抛出
created
- 如果不存在具有指定名称的文件:控制台抛出
created
并创建该文件
更新2:
我设法以稍微不同的方式使它工作:
if (!fs.existsSync(fullPath)) {
fs.writeFileSync(fullPath, '')
} else {
alert("exist")
}
答案
对于方法1,您使用的是fs.writeFile(file, data[, options], callback)
。因此无论如何都会调用回调,警告“存在”。你应该检查一下,例如:
fs.writeFile(fullPath, '', (error) => {
if(error) {
alert("exist");
return;
}
// no error, do what you want.
});
参考:https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback
对于方法2,您将收到警告,因为您在没有回调的情况下调用fs.appendFile。使用fs.appendFileSync或给它一个回调。
参考:https://nodejs.org/api/fs.html#fs_fs_appendfile_file_data_options_callback
以上是关于尝试使用Electron应用程序中的节点fs的不同方法创建新文件时出错的主要内容,如果未能解决你的问题,请参考以下文章
FS - 在 Webpack 5 上为 Electron 使用 FS
Electron 和 TypeScript:“fs”无法解析
Browserify / Electron / AngularJS 错误:fs.existsSync 不是函数