由于不同的节点版本和不同的ABI不兼容性,我需要相对地加载C ++插件,因为它们在不同的位置具有不同的ABI版本。
但是我遇到的问题更容易解释。为什么以下两个呼叫不同?
const nodegit = require("./../path/to/nodegit.node");
const nodegit = require("nodegit");
Afaik两个调用均加载相同的库。但是有区别。作为示例,我想使用Repository.init,它具有以下函数头:
Repository.init(repo_path, 0).then(function(repository) {
// Use repository
});
如果我现在致电:
nodegit.Repository.init("/path/to/randm/dir", 0);
我得到这个异常:
Callback is required and must be a Function.
似乎返回的Promise成为了init函数的参数。我是否缺少某些东西,或者require
如果它是相对的,会以不同的方式解释这个库吗?
调用有所不同,因为require('nodegit')
入口点可以包装require("./../path/to/nodegit.node")
并提供更好的JavaScript体验。您可以在这里看到它:https : //github.com/nodegit/nodegit/blob/master/generate/templates/templates/nodegit.js#L11-L23。用JavaScript编写API比使用C ++要容易得多,这最终就是它如此工作的原因。您仍然可以直接使用本机二进制文件,但是如果没有NodeGit API,您将获得接近libgit2的体验。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句