Мне нужно добавить пакет NPM в BrowserView
с помощью executeJavaScript
.Пакет Web3 и вот что я пробовал до сих пор.
import Web3 from 'web3'
const web3 = '' + Web3; // stringify the Web3 class
view.webContents.executeJavaScript(`
const provider = // ... provider got injected successfully because it doesn't have dependencies.
const web3 = new ${web3}(provider);
`)
Но при этом выдается следующая ошибка.
Uncaught ReferenceError: core is not defined
at new Web3 (<anonymous>:45:5)
at <anonymous>:41:16
Web3 пытаетсязагрузите его ядро , которое, к сожалению, не было преобразовано в строку.
Итак, мой вопрос, как я могу загрузить весь этот пакет в BrowserView
?Ака, как вы можете загрузить пакет npm в браузер, если у вас нет контроля над тегами <script />
(по крайней мере, я бы не знал, как их вводить в Electron)?
Обновление:
Из-за того, что OJ Kwon предложил в комментариях, я попытался связать Web3 с Browserify , запустив
browserify packages/web3/src/index.js -o web3-bundle.js
.Кажется, это сработало, потому что в самом конце связанного файла (web3-bundle.js
) написано:
// ... 50k+ lines long file
var version = require('../package.json').version;
var core = require('web3-core');
var Eth = require('web3-eth');
var Net = require('web3-net');
var Personal = require('web3-eth-personal');
var Shh = require('web3-shh');
var Bzz = require('web3-bzz');
var utils = require('web3-utils');
var Web3 = function Web3() {
var _this = this;
// sets _requestmanager etc
core.packageInit(this, arguments);
this.version = version;
this.utils = utils;
this.eth = new Eth(this);
this.shh = new Shh(this);
this.bzz = new Bzz(this);
// overwrite package setProvider
var setProvider = this.setProvider;
this.setProvider = function (provider, net) {
setProvider.apply(_this, arguments);
this.eth.setProvider(provider, net);
this.shh.setProvider(provider, net);
this.bzz.setProvider(provider);
return true;
};
};
Web3.version = version;
Web3.utils = utils;
Web3.modules = {
Eth: Eth,
Net: Net,
Personal: Personal,
Shh: Shh,
Bzz: Bzz
};
core.addProviders(Web3);
module.exports = Web3;
Теперь я пытаюсь импортировать и включить его следующим образом:
const Web3 = require('./web3-bundle.js');
, который не работает.Там написано undefined
не конструктор.
const Web3 = require('./web3-bundle.js').Web3;
и
const Web3 = require('./web3-bundle.js').default;
оба не работали.Как это сделать?
Обновление 2: При дальнейшей проверке пакета он использует exports.
и module.exports =
.Мой редактор предлагает только методы и объекты, экспортируемые с exports.
как импортируемые ? * 1049 *