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

时间:2015-03-28 11:24:27

标签: javascript node.js exists fs

我正在使用fs.statSync创建一个函数,该函数返回文件存在与否的布尔值。它看起来像这样:

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。我不明白为什么。

1 个答案:

答案 0 :(得分:4)

我认为您要删除该回调,并将文件名添加到您的参数中:

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

let fileExists = doesExist('somefile');
不过,还有fs.exists