В моем файле package.json
у меня есть:
"devDependencies": {
"chai": "^4.1.2",
"chai-as-promised": "^7.0.0",
"chai-bignumber": "^2.0.0",
"decimal.js": "^10.0.0",
"ethereumjs-testrpc-sc": "6.1.2",
"ganache-cli": "6.1.0",
"solidity-coverage": "0.4.14",
"truffle": "4.1.3"
}
Я создал файл сценария NodeJS getWeb3Version.js
:
let web3 = require("web3");
console.log(web3.version);
Когда я запускаю node getWeb3Version.js
до npm install
, Я получаю 1.0.0-beta.30
.
Когда я запускаю node getWeb3Version.js
после npm install
, я получаю undefined
.
Чтобы глубже исследовать, я изменил console.log(web3.version)
на console.log(web3
), и кажется, что объект web3
после npm install
является очень маленьким подмножеством объекта web3
до npm install
.
Чтобы исследовать еще глубже, я позвонил npm list --depth=0
изнутри и снаружи моей папки проекта (где находится файл package.json
).
Когда я звоню npm list --depth=0
изнутри папки моего проекта, я получаю это:
+-- chai@4.1.2
+-- chai-as-promised@7.1.1
+-- chai-bignumber@2.0.2
+-- decimal.js@10.0.0
+-- ethereumjs-testrpc-sc@6.1.2
+-- ganache-cli@6.1.0
+-- solidity-coverage@0.4.14
`-- truffle@4.1.3
Как вы можете видеть, web3
даже нет (что очевидно, потому что я не импортирую его в мой файл package.json
).
Тем не менее, require("web3")
, кажется, работает, так какупоминается в начале вопроса.
Когда я вызываю npm list --depth=0
из-за пределов папки моего проекта, я получаю это:
+-- chai@4.1.2
+-- decimal.js@9.0.1
+-- ethereumjs-testrpc-sc@6.0.7
+-- ganache-cli@6.1.0
+-- log4js@2.5.2
+-- pug@2.0.0-rc.4
+-- solc@0.4.19
+-- solidity-coverage@0.4.14
+-- solidity-parser-sc@0.4.4
+-- sprintf-js@1.1.1
+-- testrpc@0.0.1
+-- truffle@4.1.7
`-- web3@1.0.0-beta.30
, за которым следует ряд строк, начинающихся с npm ERR! extraneous:
.
Может кто-нибудь объяснить, что именно здесь происходит?
Возможно ли, что один из пакетов, импортированных в мой файл package.json
, экспортирует подмножество объекта web3
, которое я вижу, когда делаюconsole.log(web3)
?
Спасибо.