Как мне скомпилировать код для SDK, связанного с Web3.js, чтобы он не мешал приложению, которому это требуется? - PullRequest
0 голосов
/ 26 сентября 2018

В настоящее время я создаю простой SDK, который компилирую с , и устанавливаю в качестве зависимости в моем основном js-приложении.Основное js-приложение - это децентрализованное приложение, построенное на и , поэтому оно опирается на поставщика web3, подключенного к объекту глобального окна при загрузке страницы.

Основное приложение работает нормально уже несколько месяцев.Но когда мне требуется в SDK, основное приложение ломается.Точнее говоря, когда SDK просто требует более новую версию Web3.js, он, по какой-то причине, перезаписывает объект web3 в окне браузера.

Есть ли плагин babel, который я могу использовать для решения этой проблемы?Ниже приведены фрагменты кода:

ЭТО РАБОТАЕТ: SDK:

export default class Example {};

ОСНОВНОЕ ПРИМЕНЕНИЕ:

import Example from 'example-sdk';
window.web3.eth.accounts[0];
// returns '0x4djfs...'

ЭТО ПЕРЕРЫВЫ: SDK:

import Web3 from 'web3'; // <<<<< THIS LINE BREAKS THE MAIN APP
export default class Example {};

ОСНОВНОЕ ПРИМЕНЕНИЕ:

import Example from 'example-sdk';
window.web3.eth.accounts[0];
// error gets thrown, implying the window.web3 version is newer than the one that should be written to the window by metamask

Вот мой .babelrc:

{
  "presets": ["@babel/env"],
  "plugins": ["@babel/plugin-transform-runtime"]
}

А вот мой package.json (все обычные devDependencies являются обычными dependencies в этом репо, так как это SDKи для репозитория, устанавливающего SDK, понадобятся следующие пакеты):

{
"main": "lib/index.js",
  "scripts": {
    "test": "npm test",
    "build": "babel src -d lib",
    "lint": "eslint ./src; exit 0",
    "postinstall": "npm run build"
  },
  "license": "ISC",
  "devDependencies": {
    "babel-eslint": "^8.2.6",
    "eslint": "^4.19.1",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.14.0"
  },
  "dependencies": {
    "@babel/polyfill": "^7.0.0",
    "@babel/plugin-transform-modules-commonjs": "^7.1.0",
    "@babel/runtime": "^7.0.0",
    "@babel/core": "^7.1.0",
    "@babel/plugin-transform-runtime": "^7.1.0",
    "@babel/cli": "^7.0.0",
    "@babel/preset-env": "^7.0.0-rc.1",
    "isomorphic-unfetch": "^3.0.0",
    "truffle-contract": "^4.0.0-beta.0",
    "web3": "^1.0.0-beta.36"
  }
}

Любые советы будут очень признательны

...