2017-10-19 4 views
-1

Le code que je regarde est assez simple. Elle exige une bibliothèque et utilise l'une des fonctions:Toutes les fonctions sont-elles dans le script d'entrée pour le noeud js?

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

Voici un exemple dans l'utilisation ailleurs:

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

Voici la version qu'ils utilisent:

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

Cependant, lorsque je fais la même chose sur mon propre script, la fonction n'est pas définie. Et bien sûr, la bibliothèque ne l'a pas dans le fichier d'entrée:

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

Des conseils serait génial.

+0

Je ne sais pas Bitcoin, mais il peut tout simplement vous n'avez pas la même version de "bcashjs-lib" –

Répondre

2

Le module BitGo peut utiliser hdPath() car ils le définissent eux-mêmes et l'attachent à l'objet bitcoin. Cela ne fait pas partie de bcashjs-lib.

Voir here where they define it: (ligne 129)

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

Très bien, merci. Savez-vous comment cet objet est transmis à l'autre fichier? – timothyylim

+0

c'est par les moyens "exigent" du travail. Lorsque vous avez besoin d'un module, vous obtenez l'objet exact à chaque fois, même si l'appel requis est fait dans un fichier différent. donc si vous modifiez un module, la modification sera disponible partout ailleurs. pas recommandé si vous ne savez pas ce que vous faites, car vous pourriez créer un vrai bordel avec un autre module nécessitant le même module dans votre projet. –

+0

Il semble qu'ils soient des correctifs de singe 'bcashjs-lib' - ils ajoutent une fonction à l'objet exporté par le module. Après cela, tout module qui l'importera aura accès à la nouvelle fonction. –