为什么resolve(“。/ .. / ....”)和resolve(“ foo”)之间有区别

丹尼尔·斯蒂芬斯(Daniel Stephens)

由于不同的节点版本和不同的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Promise.resolve()和resolve()之间的区别?

Promise((resolve,reject)=> {})和Promise(resolve => {})有什么区别?

“ $ {foo.bar}”和“#{foo.bar}”之间有什么区别?

“ foo is None”和“ foo == None”之间有什么区别吗?

char * str = {“ foo”,...}和char str [] [5] = {“ foo”,...}数组定义之间有什么区别?

在Python中从`foo.py`导入和`foo / __ init __。py`导入之间有什么区别

Foo :: class.java和Foo :: javaClass之间有什么区别?

“使用名称空间栏”和“使用Bar :: Foo”之间有什么区别?

&foo :: function和foo :: function有什么区别?

Bash 中的 `declare foo` 和 `foo=` 有什么区别?

ifeq($(foo),)和ifndef foo有什么区别

location / foo和location ^〜/ foo有什么区别

使用params [:foo]和@foo有什么区别?

在React组件中,foo(){}和bar =()=> {}之间有什么区别,我什么时候应该使用?

<%= foo%>和$ {foo}之间的区别

discord.js中的GuildMemberManager.resolve()和Guild.member()之间有区别吗?

Clojure中的:foo,:: foo,:: bar / foo和:bar / foo有什么区别?

返回新的Promise和Promise.resolve之间的区别

q.js:resolve()和complement()之间的区别

为什么>>&和&>>之间有区别,而>&和&>之间没有区别?

xhr.onload =()=> {resolve();}和xhr.onload = resolve();之间的区别

为什么在Vim中的“和”内部编辑之间有区别?

Promise.resolve(thenable)和新Promise(thenable.then)有什么区别?

path.resolve和path.join有什么区别?

Container.Resolve <View>()和new View()有什么区别?

方法调用语法`foo.method()`和UFCS`Foo :: method(&foo)`有什么区别?

Throw'foo',throw Error('foo'),throw new Error('foo')和有什么区别?

python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

为什么需要调用resolve()?