代码无法在Node.JS中输出错误或异常

时间:2017-05-22 17:13:37

标签: node.js nodegit

我正在使用名为GitNode的Node.JS库。我不认为它很重要,但基本上它是Node.JS中git命令的API。

我有一段代码,其目的是在现有存储库中创建一个新分支。运行代码后,我知道它没有创建存储库,我也知道它无法正常工作。

这是我的全部代码:

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);

为了找到我的错误,我已经发布了许多捕获语句。但我似乎无法输出任何东西。短语" Bad_error"或" Bad_catch"输出。

我知道代码已损坏且createBranch无法正常工作。我测试了一些应该在我调用repository.createBranch之后运行的代码,但是它永远不会在调用createBranch之前的任何地方运行。这表明CreateBranch是问题所在。

那为什么我的错误没有被抓住?

修改

我修复了代码并输出了错误(请参阅下面的答案),但我仍然想知道为什么我的其他异常/错误陈述无效。

1 个答案:

答案 0 :(得分: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

如果有人好奇,结果我传入变量respository而不是repository:p

这将输出bad。这很好。我仍然不完全为什么这样做,但我的另一个声明并没有。我还在寻找一个好的答案或解释。