2017-05-22 8 views
0

私はGitNodeというNode.JSライブラリを使用しています。私はそれが重要だとは思わないが、基本的にはNode.JSのgitコマンドのAPIだ。Node.JSでエラーまたは例外が出力されないコード

既存のリポジトリに新しいブランチを作成することを目的としたコードがあります。コードを実行した後、リポジトリを作成していないことがわかります。また、正しく動作していないこともわかります。

これは私のコードの全体です:

var Git = require("nodegit"); 

var getMostRecentCommit = function(repository) { 
    return repository.getBranchCommit("master"); 
}; 

var makeBranch = function(respository) { 
    console.log("in here1") 
    repository.createBranch("tester", getMostRecentCommit(repository)).then(
     function(reference) { 
      console.log("good")},    // if it works 
     function(reasonForFailure) { 
      console.log("bad_error")})   // createBranch has error case 
     .catch(function(reasonForFailure) { 
      console.log("bad_catch")});   // if the error function fails, I also have a catch statement 
}; 


Git.Repository.open("../test_repo") 
    .then(makeBranch); 

私は私の誤りを見つけることを期待してcatch文の多くを配置しました。しかし、私は何も出力していないようです。フレーズ「Bad_error」または「Bad_catch」は出力されません。

コードが壊れていて、createBranchが機能していないことがわかりました。私はrepository.createBranchを呼び出した後に実行するはずのコードをテストしましたが、createBranchが呼び出される前に何も実行されませんでした。これはCreateBranchが問題であることを示します。

なぜ私のエラーはキャッチされていませんか?

編集

私は、コードを修正したのだが、エラーが出力されます(下記参照答える)が、私の他の例外/エラー文が動作するように失敗した理由私はまだ思ったんだけど。

答えて

0

だから、私はhere

のおかげで、私はちょうど私のRepository.open()関数にcatch文を追加する必要がありました問題の一部を考え出しました。

var makeBranch = function(respository) { 
    console.log("in here1") 
    repository.createBranch("tester", getMostRecentCommit(repository)).then(
     function(reference) { 
      console.log("good")},    
     function(reasonForFailure) { 
      console.log("bad_error")})   
     .catch(function(reasonForFailure) { 
      console.log("bad_catch")});   
}; 


Git.Repository.open("../test_repo") 
    .then(makeBranch).catch(
    function(reasonForFailure) {console.log("bad")}); // This Works 

誰でも好奇心旺盛であれば、私が代わりにrepositoryの変数respositoryに渡した判明:P

そして、この意志出力bad。だからそれは良いです。私はまだこれがなぜ機能するのかはまだ分かりませんが、私の他のcatchステートメントはそうではありません。私はまだ良い答えや説明を探しています。

関連する問題