Путаница в NodeJS - PullRequest
       0

Путаница в NodeJS

0 голосов
/ 07 июня 2018

В моем файле 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)?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Если пакет не указан в ваших зависимостях и вы все еще можете его использовать, возможно, это связано с тем, что он установлен глобально.Вы можете проверить, установлена ​​ли она глобально, выполнив npm ls -g Также в отличие от chai, ganache-cli, web3 является зависимостью приложения, поэтому попробуйте найти ее по зависимостям, а не по dev

0 голосов
/ 07 июня 2018

is a very small subset of the web3 object получается после того, как npm install

, потому что один из ваших установленных модулей использует другую версию web3.И когда вы не сделали npm install, пакет web3 получается из глобальных пакетов, который является web3@1.0.0-beta.30.

Ключевым моментом, который следует здесь помнить, является то, что этот локальный пакет переопределяет глобальный пакет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...