【问题标题】:Async operations with nodegit on electron not working电子上nodegit的异步操作不起作用
【发布时间】:2016-08-04 19:33:04
【问题描述】:

我正在使用 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 返回一个被 catch 块捕获的错误,并且在控制台上输出值时它简单地显示true,并且不提供任何附加信息。

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

上一个:

电子预建:0.37.8
节点git:0.13.0

更新后:

电子预建:1.2.1
节点git: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

【问题讨论】:

    标签: javascript electron nodegit


    【解决方案1】:

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

    【讨论】:

    • 我已经尝试过运行electron-rebuild,也尝试过使用npm 直接安装模块,两者都在链接中记录。他们无法解决问题。需要明确的是,nodegit 对象可以从电子访问,因此模块已经构建。我遇到了纯 Promise 操作的问题。
    • @cynicaldevil 你的问题听起来和这里讨论的完全一样:github.com/electron/electron/issues/5851#issuecomment-224431773 所以我建议仔细检查你用于重建nodegit 的参数,以确保它们与你正在使用的电子版本相匹配.
    • @cynicaldevil 太棒了!当您将来将 Electron 更新到其他版本时,不要忘记在 NPM 脚本中更新目标版本 :)
    猜你喜欢
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2022-01-05
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多