Javascript 如何使如果没有文件,它将什么也不做
嘿,所以我正在尝试保存一些JSONJavascript 如何使如果没有文件,它将什么也不做,javascript,node.js,json,Javascript,Node.js,Json,嘿,所以我正在尝试保存一些JSON const cidc = require('./cid/cid.json') const dc = require('./details/cid.json') const lc = require('./lik/cid.json') if(!cidc){ return }else{ fs.unlinkSync('./src/main/setting/cid/cid.json') } if(!dc) { return }else {
const cidc = require('./cid/cid.json')
const dc = require('./details/cid.json')
const lc = require('./lik/cid.json')
if(!cidc){
return
}else{
fs.unlinkSync('./src/main/setting/cid/cid.json')
} if(!dc) {
return
}else {
fs.unlinkSync('./src/main/setting/details/cid.json')
} if (!lc){
return
}else {
fs.unlinkSync('./src/main/setting/lik/cid.json')
}
所以我试图删除dc文件,但它出错了
如果没有这样一个名为的文件,我如何使它不做任何事情(也称为不返回任何内容)
如果有一个名为的文件,它将把它约束为一个变量,因为require会抛出一个错误
error:not find module…
,而您没有捕获到这些错误,那么脚本将失败
您可以定义一个新的require函数,在该函数中捕获错误并返回undefined:
function safeRequire(path) {
try {
return require(path);
} catch(err) {
return undefined;
}
}
然后在脚本中使用此函数:
const cidc = safeRequire('./cid/cid.json')
const dc = safeRequire('./details/cid.json')
const lc = safeRequire('./lik/cid.json')
// rest of your code
此外,还可以通过反转条件来简化if/else条件:
if (cidc) {
fs.unlinkSync('./src/main/setting/cid/cid.json')
}
if (dc) {
fs.unlinkSync('./src/main/setting/details/cid.json')
}
if (lc){
fs.unlinkSync('./src/main/setting/lik/cid.json')
}
或者,您甚至不需要使用
require
,只需使用例如fs.access(…)
检查文件是否存在,您可以直接使用unlink with try catch,而无需任何要求
function unlink(filePath) {
try {
fs.unlinkSync(filePath);
} catch (e) {
//ignore
}
}
unlink('./src/main/setting/cid/cid.json')
unlink('./src/main/setting/details/cid.json')
unlink('./src/main/setting/lik/cid.json')
但是,如果没有这样一个名为某物的文件,这不是会出错吗?是的,错误将由fs.unlink抛出并在catch块中捕获。您可以进一步检查catch块中的错误代码enoint,并向用户显示消息。