2017-12-22 15 views
1

を扱う検出:ファイルは、通常のいずれかを実行する代わりに特殊な処理を行うために存在しない場合、私はそれをしたい何fsが、私は次のような機能を持っている私の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); 
    }); 

。しかし、ファイルが自分のコールバック上に存在しないことをどのように知るでしょうか?

答えて

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 -clause:

0を使用できます。
switch (err.code) { 
    case 'ENOENT': 
    return special_handle(err) 
    case 'EPERM': 
    return eperm_handle(err) 
    case default: 
    return normal_handle(err) 
} 
関連する問題