尝试使用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”无法解析

如何在 Electron 中正确使用 preload.js

Browserify / Electron / AngularJS 错误:fs.existsSync 不是函数

如何在 Electron 中使用 fs 保存 PDF 文件?

TypeError:fs.​​existsSync 不是函数(Electron/ReactJS/Typescript)