@Bonotopy said in КАК ВЫПОЛНИТЬ C# КОД В BAS:
Существут ли способ выполнить с# код в бас?
нет
До этого всё нормально работало с этим кодом
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);
}));
Чтобы понять, что именно за ошибка привела к остановке процесса, используем такой подход.
Чтобы такого больше не происходило, всегда указывайте конкретную версию зависимостей для ноды!