LESSON 9: "before each" hook for "works with live chainlink keepers and Chainlink VRF, we get a random winner" #5589
-
Hi, When I run the command: Raffle unit test
FulfillRandomWord
1) "before each" hook for "works with live chainlink keepers and Chainlink VRF, we get a random winner"
0 passing (914ms)
1 failing
1) Raffle unit test
"before each" hook for "works with live chainlink keepers and Chainlink VRF, we get a random winner":
at Object.getContract (node_modules\@nomiclabs\hardhat-ethers\src\internal\helpers.ts:447:11)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Context.<anonymous> (test\staging\Raffle.staging.js:12:24)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
PS C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc> yarn hardhat test --network sepolia
yarn run v1.22.19
warning package.json: No license field
$ C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\.bin\hardhat test --network sepolia
Raffle unit test
FulfillRandomWord
1) "before each" hook for "works with live chainlink keepers and Chainlink VRF, we get a random winner"
0 passing (667ms)
1 failing
1) Raffle unit test
"before each" hook for "works with live chainlink keepers and Chainlink VRF, we get a random winner":
Error: No Contract deployed with name Raffle
at Object.getContract (node_modules\@nomiclabs\hardhat-ethers\src\internal\helpers.ts:447:11)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at Context.<anonymous> (test\staging\Raffle.staging.js:12:24)
So I run: yarn hardhat deploy and all works:
$ C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\.bin\hardhat deploy
Nothing to compile
Local network detected: Deeploying mocks....
deploying "VRFCoordinatorV2Mock" (tx: 0xf50670372fe601f04f6469a19634012866cc208bc3ed8f1c902ef2b2fb6bb71f)...: deployed at 0x5FbDB2315678afecb367f032d93F642f64180aa3 with 2540078 gas
Mock deployed!
----------------------------------------
deploying "Raffle" (tx: 0xf8755ebf00117f058ced374993b00268933caba84fd35c09e54a55ec38e14f2a)...: deployed at 0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 with 1229750 gas
----------------------------
Consumer is added
Done in 4.76s. but if I run yarn hardhat deploy --network sepolia, I got the following error: $ C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\.bin\hardhat deploy --network sepolia
Nothing to compile
An unexpected error occurred:
Error: ERROR processing C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\deploy\01.deploy.raffle.js:
TypeError: Cannot read properties of undefined (reading 'vrfCoordinatorV2')
at Object.module.exports [as func] (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\deploy\01.deploy.raffle.js:21:57)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at DeploymentsManager.executeDeployScripts (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\DeploymentsManager.ts:1222:22)
at DeploymentsManager.runDeploy (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\DeploymentsManager.ts:1055:5)
at SimpleTaskDefinition.action (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\index.ts:438:5)
at Environment._runTaskDefinition (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:330:14)
at Environment.run (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:163:14)
at SimpleTaskDefinition.action (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\index.ts:584:32)
at Environment._runTaskDefinition (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:330:14)
at Environment.run (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:163:14)
at DeploymentsManager.executeDeployScripts (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\DeploymentsManager.ts:1225:19)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at DeploymentsManager.runDeploy (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\DeploymentsManager.ts:1055:5)
at SimpleTaskDefinition.action (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\index.ts:438:5)
at Environment._runTaskDefinition (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:330:14)
at Environment.run (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:163:14)
at SimpleTaskDefinition.action (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\index.ts:584:32)
at Environment._runTaskDefinition (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:330:14)
at Environment.run (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat\src\internal\core\runtime-environment.ts:163:14)
at SimpleTaskDefinition.action (C:\Users\K\hh-fcc\hardhat-smartcontract-lottary-fcc\node_modules\hardhat-deploy\src\index.ts:669:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. So I checked my const { network, ethers } = require("hardhat")
const { developmentChains, networkConfig } = require("../helper-hardhat-config")
const { verify } = require("../helper-hardhat-config")
const VRF_SUB_FUND_AMOUNT = ethers.utils.parseEther("30")
module.exports = async function ({ getNamedAccounts, deployments }) {
const { deploy, log } = deployments
const { deployer } = await getNamedAccounts()
const chainId = network.config.chainId
let vrfCoordinatorV2Address, subscriptionId, vrfCoordinatorV2Mock
if (chainId == 31337) {
vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock")
vrfCoordinatorV2Address = vrfCoordinatorV2Mock.address
const transactionResponde = await vrfCoordinatorV2Mock.createSubscription()
const transactionReceipt = await transactionResponde.wait()
subscriptionId = transactionReceipt.events[0].args.subId
await vrfCoordinatorV2Mock.fundSubscription(subscriptionId, VRF_SUB_FUND_AMOUNT)
} else {
vrfCoordinatorV2Address = networkConfig[chainId]["vrfCoordinatorV2"]
subscriptionId = networkConfig[chainId]["subscriptionId"]
}
const entranceFee = networkConfig[chainId]["entranceFee"]
const gasLane = networkConfig[chainId]["gasLane"]
const callbackGasLimit = networkConfig[chainId]["callbackGasLimit"]
const interval = networkConfig[chainId]["interval"]
const args = [
vrfCoordinatorV2Address,
subscriptionId,
gasLane,
interval,
entranceFee,
callbackGasLimit,
]
const raffle = await deploy("Raffle", {
from: deployer,
args: args,
log: true,
waitConfermation: network.config.blockConfirmations || 1,
})
if (!developmentChains.includes(network.name) && process.env.ETHERSCAN_API_KEY) {
log("Verify....")
await verify(raffle.address, args)
}
log("----------------------------")
if (developmentChains.includes(network.name)) {
//const vrfCoordinatorV2Mock = await ethers.getContract("VRFCoordinatorV2Mock") from github
await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)
log("Consumer is added")
}
}
module.exports.tags = ["all", "raffle"] went to check if I defined the the vrfCoordinatorV2 address, in my hardhat-helper.js: const { ethers } = require("hardhat")
const networkConfig = {
1115111: {
name: "sepolia",
vrfCoordinatorV2: "0x8103B0A8A00be2DDC778e6e7eaa21791Cd364625",
subscriptionId: "2319",
gasLane: "0x474e34a077df58807dbe9c96d3c009b23b3c6d0cce433e59bbf5b34f823bc56c",
interval: "30",
entranceFee: ethers.utils.parseEther("0.01"),
callbackGasLimit: "500000",
},
31337: {
name: "hardhat",
entranceFee: ethers.utils.parseEther("0.01"),
gasLane: "0x474e34a077df58807dbe9c96d3c009b23b3c6d0cce433e59bbf5b34f823bc56c",
callbackGasLimit: "500000",
interval: "30",
},
}
const developmentChains = ["hardhat", "localhost"]
module.exports = {
networkConfig,
developmentChains,
} last check that I have done is my hardhat.config.js, and seems correct: /** @type import('hardhat/config').HardhatUserConfig */
require("@nomiclabs/hardhat-waffle")
require("@nomiclabs/hardhat-etherscan")
require("hardhat-deploy")
require("solidity-coverage")
require("hardhat-gas-reporter")
require("hardhat-contract-sizer")
require("dotenv").config()
const SEPOLIA_RPC_URL =
process.env.SEPOLIA_RPC_URL ||
"https://eth-sepolia.g.alchemy.com/v2/-eThWc9tsabKX_oPoSJg97lC2vaDYpRT"
const PRIVATE_KEY = process.env.PRIVATE_KEY
const COINMARKETCAP_API_KEY = process.env.COINMARKETCAP_API_KEY
const ETHERSCAN_API_KEY = process.env.ETHERSCAN_API_KEY
module.exports = {
defaultNetwork: "hardhat",
networks: {
hardhat: {
chainId: 31337,
blockConfermation: 1,
},
sepolia: {
chainId: 11155111,
blockConfermation: 6,
url: SEPOLIA_RPC_URL,
accounts: [PRIVATE_KEY],
},
},
gasReporter: {
enabled: false,
currency: "USD",
outputFile: "gas-report.txt",
noColors: true,
// coinmarketcap: COINMARKETCAP_API_KEY,
},
solidity: "0.8.7",
namedAccounts: {
deployer: {
default: 0,
},
player: {
default: 1,
},
},
mocha: {
timeout: 300000,
},
} can someone guys help me out to understand what I am missing? Thank you |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
@cryptocambi
|
Beta Was this translation helpful? Give feedback.
-
TypeError: Cannot read properties of undefined (reading 'vrfCoordinatorV2')This error indicates that the vrfCoordinator address is not correct.
|
Beta Was this translation helpful? Give feedback.
-
@cryptocambi Please check the above solutions otherwise let me know. |
Beta Was this translation helpful? Give feedback.
@cryptocambi
invalid chainId in helper-hardhat-config