smartcontractkit / full-blockchain-solidity-course-js

Learn Blockchain, Solidity, and Full Stack Web3 Development with Javascript
12.25k stars 2.94k forks source link

Error: invalid address (argument="address", value=undefined, code=INVALID_ARGUMENT, version=address/5.7.0) (argument="priceFeedAddress", value=undefined, code=INVALID_ARGUMENT, version=abi/5.7.0) #4631

Closed Micky447 closed 1 year ago

Micky447 commented 1 year ago

Lesson

Lesson 7

Could you please leave a link to the timestamp in the video where this error occurs? (You can right click a video and "copy video URL at current time")

No response

Operating System

Windows

Describe the bug

const { network } = require("hardhat") const { networkConfig, developmentChains } = require("../helper-hardhat-config")

module.exports = async ({getNamedAccounts, deployments}) => { const { deploy, log } = deployments const { deployer } = await getNamedAccounts() const chainId = network.config.chainId

let ethUsdPriceFeedAddress

if(developmentChains.includes[network.name]) {
    const ethUsdAggregator = await deployments.get("MockV3Aggregator")
    ethUsdPriceFeedAddress = ethUsdAggregator.address
} 
else {
    ethUsdPriceFeedAddress = networkConfig[chainId]["ethUsdPriceFeed"]
}

log("Deploying FundMe contract.....")
const fundMe = await deploy("FundMe", {
    contract: "FundMe",
    from: deployer,
    args: [ethUsdPriceFeedAddress],
    log: true,
})
log("------------------------------------")

}

module.exports.tags = ["all", "fundme"]

.................................................................

Fund Me contract

// SPDX-License-Identifier: MIT pragma solidity ^0.8.8;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; import "./PriceConverter.sol";

error NotOwner();

contract FundMe { using PriceConverter for uint256;

mapping(address => uint256) public addressToAmountFunded;
address[] public funders;

// Could we make this constant?  /* hint: no! We should make it immutable! */
address public /* immutable */ i_owner;
uint256 public constant MINIMUM_USD = 50 * 10 ** 18;

AggregatorV3Interface public priceFeed;

constructor(address priceFeedAddress) {
    i_owner = msg.sender;
    priceFeed = AggregatorV3Interface(priceFeedAddress);
}

function fund() public payable {
    require(msg.value.getConversionRate(priceFeed) >= MINIMUM_USD, "You need to spend more ETH!");
    // require(PriceConverter.getConversionRate(msg.value) >= MINIMUM_USD, "You need to spend more ETH!");
    addressToAmountFunded[msg.sender] += msg.value;
    funders.push(msg.sender);
}

modifier onlyOwner {
    // require(msg.sender == owner);
    if (msg.sender != i_owner) revert NotOwner();
    _;
}

function withdraw() public onlyOwner {
    for (uint256 funderIndex=0; funderIndex < funders.length; funderIndex++){
        address funder = funders[funderIndex];
        addressToAmountFunded[funder] = 0;
    }
    funders = new address[](0);

    (bool callSuccess, ) = payable(msg.sender).call{value: address(this).balance}("");
    require(callSuccess, "Call failed");
}

fallback() external payable {
    fund();
}

receive() external payable {
    fund();
}

}

Micky447 commented 1 year ago

const ethUsdAggregator = await deployments.get("MockV3Aggregator")

this code not working...