У меня проблемы с вызовом простой функции из моего договора о солидности.Вот как структурирован код:
В моем файле web3Api.js
у меня есть:
export function getContract(contractDefinition) {
initWeb3();
const contract = initContract(contractDefinition);
contract.setProvider(web3.currentProvider);
if (typeof contract.currentProvider.sendAsync !== 'function') {
contract.currentProvider.sendAsync = function () {
return contract.currentProvider.send.apply(
contract.currentProvider, arguments
);
};
}
return contract.deployed();
}
Затем в моем файле projectApi.js
у меня есть:
import { getContract } from './web3Api';
import CompiledContract '../../../build/contracts/compiledContract.json';
let globalVariable;
export async function testing123() {
const contractInstance = await getContract(CompiledContract)
globalVariable = contractInstance;
}
Примечание. Когда я вызываю глобальную переменную в этом файле, он успешно возвращает все функции моего контракта
TruffleContract {constructor: ƒ, abi: Array(33), contract: Contract, PracticeEvent: ƒ, Transfer: ƒ, …}
Так что в следующей части я столкнулся с проблемой.
Для этогоради поста, я просто пытаюсь вызвать эту простую функцию из моего контракта:
function smartContractFunction() public {
emit PracticeEvent("practice event has been called");
}
Теперь вернусь в мой файл projectApi.js
. Я использую globalVariable, чтобы попытаться получить эту функцию из моего контракта.Вот что я написал:
export async function practiceInteract() {
const submitTest = await globalVariable.smartContractFunction().call();
console.log(submitTest);
}
Когда я запускаю приложение, я получаю сообщение об ошибке "formatters.js: 274 Uncaught (in обещание) Ошибка: неверный адрес"
Любые идеи, почему яне могу вызвать эту функцию солидности в моем файле projectAPI.js?
Рад прояснить это, если я четко не выписал свою проблему.Спасибо!