Web3js

未擷取的 ReferenceError:未定義 TruffleContract

  • January 10, 2022

我正在研究智能合約。當我嘗試通過 lite-server 提供智能合約時,我在瀏覽器控制台中看到以下錯誤

在此處輸入圖像描述

這裡是我的 app.js 原始碼:https ://pastebin.com/UjFuYCyQ

我試過單獨安裝 TruffleContract 但沒有運氣。

App.js 程式碼:

   App = {
 web3Provider: null,
 contracts: {},
 account: 0x0,

 init: function() {
   return App.initWeb3();
 },

 initWeb3: function() {

   if (typeof web3 !== 'undefined') {
     App.web3Provider = web3.currentProvider;
   } else {

     App.web3Provider = new Web3.providers.HttpProvider('http://localhost:7545');
   }
   web3 = new Web3(App.web3Provider);
   App.displayAccountInfo();
   return App.initContract();
 },

 displayAccountInfo: function(){
   web3.eth.getCoinbase(function(err, account){
     if(err === null){
       App.account = account;
       $('#accountId').text(account);
     }
   });
   return App.initContract();
 },

 initContract: function() {
   $.getJSON('Voting.json', function(votingArtifact) {

     App.contracts.Voting = TruffleContract(votingArtifact);

     App.contracts.Voting.setProvider(App.web3Provider);

     return App.reloadVoters();
   });
 },

 reloadVoters: function() {

   App.displayAccountInfo();

 }
};

$(function() {
 $(window).load(function() {
   App.init();
 });
});

它看起來像普通的 javascript,為了訪問TruffleContract,您需要在 html 上添加腳本<script src="{uri_truffle_contract.js}"></script>

如果要通過 npm 包添加,則需要var contract = require("truffle-contract");在 javascript 之上添加。在這種情況下,您需要browserify在瀏覽器中執行之前。

只需執行npm i @truffle/contract這將安裝正確的包。松露契約現在重命名為@truffle/contract。檢查 npm 文件

引用自:https://ethereum.stackexchange.com/questions/60526