节点js的入口脚本中是否有所有函数?

问题描述:

我正在看的代码很简单。它需要一个图书馆和使用的功能之一:节点js的入口脚本中是否有所有函数?

https://github.com/BitGo/BitGoJS/blob/30f7b0850e65a0cec91ad911e76a935e07c363a5/src/v2/coins/bch.js#L40

这里就是他们使用的版本::

https://github.com/BitGo/BitGoJS/blob/30f7b0850e65a0cec91ad911e76a935e07c363a5/package.json#L74

const bitcoin = require('bcashjs-lib'); 
. 
. 
. 
const hdPath = bitcoin.hdPath(keychain); 

在这里,在其他地方使用的是它的一个例子

但是,当我对我自己的脚本执行相同的操作时,函数未定义。果然,图书馆没有它的入口文件:

https://github.com/BitGo/bcashjs-lib/blob/master/src/index.js

任何提示将是巨大的。

+0

我不知道比特币,但它可能仅仅是你没有的“bcashjs-lib的” –

BitGo模块能够使用hdPath(),因为它们自己定义它并将其附加到比特币对象。这不是bcashjs-lib的一部分。

here where they define it:(129行)

bitcoin.hdPath = function(rootKey) { 
    const cache = {}; 
    //etc... 
} 
+0

太好了,谢谢你的版本相同。你会知道该对象是如何传递给其他文件的? – timothyylim

+0

它是通过“需要”工作的方式。 当你需要一个模块时,即使需要的调用是在不同的文件中进行的,你每次都会得到确切的对象。所以如果你修改一个模块,修改将在其他地方提供。如果你不知道自己在做什么,不建议这样做,因为你可能会在项目中需要相同模块的其他模块创建一个真正的混乱。 –

+0

看起来他们是猴子补丁'bcashjs-lib' - 他们正在为模块导出的对象添加一个函数。之后,任何导入它的模块都可以访问新功能。 –