Смотрите я все написал как есть. На прошлой неделе проблем с загрузкой на сервер было 0. Скрипт не новый я года 3 его обновляю, названий не меняю. Про нод в скрипте я ошибся, используется встроенный модуль ексель. Смайлы\спецсимволы не используются
Сейчас bablosoft.com и форум доступны у меня без vpn dpi и прочего так же как именно сейчас загрузка на сервер скрипта. Сегодня с утра я около 2х часов не мог загрузить на сервер. Лично я думал что проблема в блокировках. Но раньше вопрос блокировок решался включением впн. Про смену впн я тоже написал у меня свои сервера в еу\юс локациях с разными протоколами впн. Впн заведомо рабочий в нем нет вопросов
Я зашел с утра на форум увидел эту свежую тему человек пишет что не из РФ и вряд ли у него будут проблемы с блокировками. Подумал может с сервером обновлений что-то случилось
Ошибка на этой неделе появлялась несколько раз и сама решалась и повторю сейчас ее нет, но я не сижу и не обновляю скрипт каждую минуту
В 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); }));Чтобы понять, что именно за ошибка привела к остановке процесса, используем такой подход.
Чтобы такого больше не происходило, всегда указывайте конкретную версию зависимостей для ноды!