Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试在Electron应用程序中使用节点fs的不同方法创建新文件时出错_Javascript_Node.js_Electron - Fatal编程技术网

Javascript 尝试在Electron应用程序中使用节点fs的不同方法创建新文件时出错

Javascript 尝试在Electron应用程序中使用节点fs的不同方法创建新文件时出错,javascript,node.js,electron,Javascript,Node.js,Electron,我正在尝试创建新文件,但以下两种方法都会引发错误: 方法1: 如果存在具有指定名称的文件:console抛出exist 如果指定名称的文件不存在:console将抛出exist并创建该文件 方法2: 如果存在具有指定名称的文件:console抛出exist 如果指定名称的文件不存在:它将创建该文件并给出以下错误不推荐使用警告:不使用回调调用异步函数是不推荐的。 问题: 我做错了什么 更新: 我还尝试了以下答案中建议的方法: // fullPath= 'C:/Users/Name/tes

我正在尝试创建新文件,但以下两种方法都会引发错误:

方法1:
  • 如果存在具有指定名称的文件:console抛出
    exist
  • 如果指定名称的文件不存在:console将抛出
    exist
    并创建该文件
方法2:
  • 如果存在具有指定名称的文件:console抛出
    exist
  • 如果指定名称的文件不存在:它将创建该文件并给出以下错误
    不推荐使用警告:不使用回调调用异步函数是不推荐的。
问题: 我做错了什么


更新: 我还尝试了以下答案中建议的方法:

// fullPath= 'C:/Users/Name/test.txt'

fs.writeFile(fullPath, '', (error) => {
  if(error) {
    alert("exist")
    return
  }
    alert("created")
})
我明白了:

  • 如果存在具有指定名称的文件:console抛出创建的
  • 如果指定名称的文件不存在:console将抛出
    created
    并创建该文件

更新2: 我设法使它以一种稍微不同的方式工作:

if (!fs.existsSync(fullPath)) { 
  fs.writeFileSync(fullPath, '')
} else {
  alert("exist")
}

对于方法1,您使用的是
fs.writeFile(文件,数据[,选项],回调)
。因此,无论发生什么情况,都将调用回调,并发出“存在”警报。你应该有一张支票,比如:

fs.writeFile(fullPath, '', (error) => {
  if(error) {
    alert("exist");
    return;
  }

  // no error, do what you want.
});
参考:

对于方法2,您会收到警告,因为您在没有回调的情况下调用fs.appendFile。使用fs.appendFileSync或给它一个回调


参考:

对于方法1,您使用的是
fs.writeFile(文件,数据[,选项],回调)
。因此,无论发生什么情况,都将调用回调,并发出“存在”警报。你应该有一张支票,比如:

fs.writeFile(fullPath, '', (error) => {
  if(error) {
    alert("exist");
    return;
  }

  // no error, do what you want.
});
参考:

对于方法2,您会收到警告,因为您在没有回调的情况下调用fs.appendFile。使用fs.appendFileSync或给它一个回调


参考资料:

谢谢你的回答,我更新了问题,即使创建文件,我仍然会收到错误。我是个新手,所以我不确定我在那里做错了什么。(我不使用分号,因为项目正在使用webpack)回调在成功和出现错误时将被调用。文档说明fs.writeFile
异步将数据写入文件,如果文件已经存在,则替换该文件。
因此,如果文件存在,则替换该文件,然后调用callback,并将
error
设为null。它将发出“已创建”警报。当文件不存在时,它会执行相同的操作,但只创建文件而不是替换文件。除了在不需要的时候使用警报之外,您没有做错任何事情。如果你真的想知道是否有错误,你应该提醒(错误)
。啊,明白了,谢谢你的解释和帮助。我设法使它工作感谢的答案,我更新了问题,我仍然得到错误,即使它创建文件。我是个新手,所以我不确定我在那里做错了什么。(我不使用分号,因为项目正在使用webpack)回调在成功和出现错误时将被调用。文档说明fs.writeFile
异步将数据写入文件,如果文件已经存在,则替换该文件。
因此,如果文件存在,则替换该文件,然后调用callback,并将
error
设为null。它将发出“已创建”警报。当文件不存在时,它会执行相同的操作,但只创建文件而不是替换文件。除了在不需要的时候使用警报之外,您没有做错任何事情。如果你真的想知道是否有错误,你应该提醒(错误)。啊,明白了,谢谢你的解释和帮助。我设法做到了
fs.writeFile(fullPath, '', (error) => {
  if(error) {
    alert("exist");
    return;
  }

  // no error, do what you want.
});