fs检测处理不同的错误类型

问题描述 投票:1回答:1

在我的nodejs应用程序上,我有以下功能:

    const special_handle= function(err){
         console.error("Special Handled",err);
    }

    const normal_handle= function(err){
         console.error("Normal Handled",err);
    }

    const callback = function(err,mime,data){
       if(err) {
           if(/*file does not exist*/){
                 return special_handle(err);
           } else {
                  return normal_handle(err);
           }
       }
    }

    fs.readFile(fileFullPath,(err,data)=>{
        if(err){
           return callback(err);
        }

        const mimeType = mime.lookup(fileFullPath);
        callback(null,mimeType,data);
    });

当文件不存在进行特殊处理而不是正常处理时,我想要它。但我怎么知道我的回调文件不存在?

node.js callback fs
1个回答
1
投票

如果文件/目录不存在,您将收到ENOENT错误。然后,您可以使用switch或if子句来处理不同的结果。

由不存在的文件/目录返回的典型err对象如下所示:

{ Error: ENOENT: no such file or directory, open 'test.js' errno: -2, code: 'ENOENT', syscall: 'open', path: 'test.js' }

因此,如果要检查文件是否存在,可以执行以下操作:

if (err.code === 'ENOENT') {
  return special_handle(err)
} else {
  return normal_handle(err)
}

或者如果你想检查多种类型的错误,例如当你的程序没有读取文件/目录的权限时将抛出的EPERM,你可以使用switch子句:

switch (err.code) {
  case 'ENOENT':
    return special_handle(err)
  case 'EPERM':
    return eperm_handle(err)
  case default:
    return normal_handle(err)
}
© www.soinside.com 2019 - 2024. All rights reserved.