如果文件不存在,fs.statSync 会抛出错误

Posted

技术标签:

【中文标题】如果文件不存在,fs.statSync 会抛出错误【英文标题】:fs.statSync throws error if file does not exist 【发布时间】:2016-01-28 18:31:47 【问题描述】:

我正在尝试确定文件是否存在。如果它不存在,我希望我的代码继续,以便创建它。当我使用以下代码时,如果文件存在,它会打印出“它存在”。如果它不存在,它会使我的应用程序崩溃。这是我的代码:

var checkDuplicateFile = function()
    var number = room.number.toString();
    var stats = fs.statSync(number);
    if(stat)
        console.log('it exists');
    else
        console.log('it does not exist');
    

;

【问题讨论】:

检查这个问题,答案类似:***.com/questions/4482686/… 这对我没有帮助。它没有回答我提出的问题。 不能使用异步版本的函数吗? nodejs.org/api/fs.html#fs_file_system 【参考方案1】:

您的应用程序崩溃了,因为您没有将 fs.statSync 包装在 try/catch 块中。节点中的同步函数不会像在 async 版本中那样返回错误。相反,他们会抛出需要捕获的错误。

try 
  var stats = fs.statSync(number);
  console.log('it exists');

catch(err) 
    console.log('it does not exist');

如果您的应用不需要此操作是同步的(阻止进一步执行,直到此操作完成),那么我将使用异步版本。

fs.stat(number, function(err, data) 
  if (err) 
    console.log('it does not exist');
  else 
    console.log('it exists');
);

  

【讨论】:

以上是关于如果文件不存在,fs.statSync 会抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

更改输入时闪亮会抛出警告:错误:无法提取不存在的列

node判断文件目录是否存在

为啥 MERGE 语句会抛出唯一键约束错误

fs.statSync

如果 "blah" 不存在,ConfigurationManager.AppSettings["blah"] 会抛出异常吗?

为啥即使元素存在,硒也会抛出未找到元素的错误? [复制]