Javascript 如何使如果没有文件,它将什么也不做

Javascript 如何使如果没有文件,它将什么也不做,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 {

嘿,所以我正在尝试保存一些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 {
    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,并向用户显示消息。