在电子上使用 nodegit 进行异步操作不起作用

Async operations with nodegit on electron not working

我正在使用 electron 和 nodegit 开发一个项目,我最近更新了我的依赖项。解决兼容性问题后,我找到了两个版本的 nodegit 和 electron 可以工作。但是经过测试,我发现异步 nodegit 操作失败,而同步操作正常。这是一个不起作用的代码示例:

const pathToRepo = require('path').resolve(path);
Git.Repository.open(pathToRepo)
.then((repo) => {
  console.log(repo);
})
.catch( (err) => {
  console.log(err);
});

执行它时,promise returns 一个错误被 catch 块捕获,并且在控制台上输出值时它简单地显示 true,并且不提供其他信息。

此外,在更新依赖项之前,我已将节点从 5 更新到 6.3。

上一个:

电子预制:0.37.8
nodegit: 0.13.0

更新后:

电子预制:1.2.1
nodegit: 0.14.1

编辑:通过添加 npm 脚本解决:

"rebuild": "npm rebuild --runtime=electron --target=1.2.1 disturl=https://atom.io/download/atom-shell --build-from-source",

和运行npm run rebuild.

nodegit 包含原生 NodeJS 模块,必须重建原生模块以针对您使用它们的 Electron 版本。可以在 http://electron.atom.io/docs/tutorial/using-native-node-modules/

找到重建本机模块的说明