fs.statSync 包含在函数中时会引发错误?

fs.statSync throws an error when contained in a function?

我正在使用 fs.statSync 创建一个函数,该函数 returns 是一个布尔值,用于判断文件是否存在。它看起来像这样:

function doesExist (cb) {
  let exists
  try {
    fs.statSync('./cmds/' + firstInitial + '.json')
    exists = true
  } catch (err) {
    exists = err && err.code === 'ENOENT' ? false : true
  }
  cb(exists)
}

示例用例:

let fileExists
doesExist('somefile.json', function (exists) {
  fileExists = exists
})

然而,运行 代码抛出 TypeError: string is not a function。我不知道为什么。

我想你想删除那个回调,并将文件名添加到你的参数中:

function doesExist(firstInitial) {
  try {
    fs.statSync('./cmds/' + firstInitial + '.json')
    return true
  } catch(err) {
    return !(err && err.code === 'ENOENT');
  }
}

let fileExists = doesExist('somefile');

顺便说一句,还有 fs.exists