Truffle-Migration
Truffle 遷移僅在未試執行時執行(試執行中的不同 account0)
我注意到在遷移中使用 HDWalletProvider 並使用 account 參數,您會在 dryRun 期間獲得隨機/意外的帳戶。我添加了一條安全線,說明地址應該符合預期,但由於 dryRun,這總是失敗。
我可以有一個條件,即遷移中的程式碼僅在不在 DryRun 中執行時才執行?
這是我遷移的一個最小範例(需要將 truffle.js 配置為使用 HDWalletProvider 並將預期地址作為 account0):
const expected = "0xcFbB1f35EF57b96cA51221a331165fF9B2c828FD"; module.exports = function(deployer, network, account) { console.log("This accounts are not from HDWalletProvider on dryRun and are always different"); console.log(account); //this fails even if HDWalletProvider is configured correctly in truffle.js if (account[0].toLowerCase() !== expected.toLowerCase()) { throw new Error( `Unexpected account0: account0=${account[0]} instead of ${expected}` ); } };
只需
skipDryRun: true
在 truffle-config.js 中添加到您的網路配置。請參閱:https ://www.trufflesuite.com/docs/truffle/reference/configuration
強烈不推薦在“真實”和“試執行”模式下執行不同的程式碼。這就是為什麼我認為 Truffle 應該在試執行中使用與實際遷移期間使用的帳戶相同的帳戶。
但是,目前,如果您仍想在遷移程式碼中檢測空執行,似乎 Truffle 將“-fork”添加為網路名稱的後綴。也許,這段程式碼會有所幫助:
if (network.split('-')[1] === "fork") { // dry-run specific code }`