0

我正在使用一个名为 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);

我已经放置了很多 catch 语句,希望能找到我的错误。但我似乎无法输出任何东西。短语“Bad_error”或“Bad_catch”都不会输出。

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

那么为什么我的错误没有被捕获呢?

编辑

我已经修复了代码并输出了错误(请参见下面的答案),但我仍然想知道为什么我的其他异常/错误语句无法工作。

4

1 回答 1

0

所以,由于这里,我发现了部分问题

我只需要在我的 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. 所以这很好。我仍然不完全为什么这会奏效,但我的其他 catch 语句却没有。我仍在寻找一个好的答案或解释。

于 2017-05-22T17:17:30.747 回答