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