@basser всё, что ты не сможешь сделать в Google Chrome, не получится и в BAS. И ответов знающих придётся ждать вечно.
В nodeJS при импорте модулей пишет is not a constructor
-
До этого всё нормально работало с этим кодом
const Web3 = require('web3'); const address = "0x57Ad68486060A8B2d2f00042b664D80fbD036830"; await (new Promise((resolve, reject) => { let web3 = new Web3('https://rpc.ankr.com/arbitrum') // тут просто меняешь RPC нужной сети web3.eth.getBalance(address, (error, balance) => { if (error) { console.error(error); } else { console.log(`Arbitrum balance: ${web3.utils.fromWei(balance, 'ether')}`); // это можно убрать, тут просто идёт ответ в лог [[ARBITRUM_BALANCE]] = Number(web3.utils.fromWei(balance, 'ether')) // Тут он записывает баланс в переменную баса ANSWER } resolve() }); }));но теперь выдаёт

в чём причина? -
Попробуйте
const { Web3 } = require('web3');
-
@UserTrue вообще, если запросить версию этого модуля, то теперь всё нормально выводится, но скрипт, который я указал выше - не работает. Пишет "Node process stopped.". Как я понял, таким способом (const { Web3 } = require('web3');) я импортирую только часть модуля, и, когда я пытаюсь вызвать web3.eth.getBalance, то он просто не видит этот метод, так как он является уже методом объекта eth. Можно ли как-то иначе попробовать это пофиксить?
-
@nicros всё в БАС нормально импортируется и работает, и почему поломалось тоже можно объяснить.
При добавлении зависимостей в БАС не просто так есть поле, где можно указать конкретную версию пакета, но по умолчанию там стоит
*. Это значит, что при любом обновлении зависимости, когда вы перезапустите скрипт, установится самая ПОСЛЕДНЯЯ версия. В данном конкретном случае обновились импорты, аNode process stoppedвызывается потому, что ошибки самой библиотеки некорректно обрабатываются, точнее не обрабатываются вообще. Там естьPromise API, поэтому рекомендую использовать его:const { Web3 } = require('web3'); const address = "0x57Ad68486060A8B2d2f00042b664D80fbD036830"; await(new Promise((resolve, reject) => { let web3 = new Web3('https://rpc.ankr.com/arbitrum'); web3.eth.getBalance(address).then((balance) => { console.log(`Arbitrum balance: ${web3.utils.fromWei(balance, 'ether')}`); [[ARBITRUM_BALANCE]] = Number(web3.utils.fromWei(balance, 'ether')); resolve() }).catch(reject); }));Чтобы понять, что именно за ошибка привела к остановке процесса, используем такой подход.
Чтобы такого больше не происходило, всегда указывайте конкретную версию зависимостей для ноды!