Hardhat
使用帶有安全帽的 OpenZeppeling 合約的問題 - 未找到:不支持文件導入回調
我在 Remix 中編寫和測試我的智能合約,我從 OpenZeppelin 導入了一些合約,現在我想將它移動到我在 VSC 中的項目中。但現在我的 VSC 因錯誤而尖叫:
Source "@openzeppelin/contracts/token/ERC20/ERC20.sol" not found: File import callback not supported
我查看了文件,發現我必須安裝一些軟體包才能將 OZ 與 Hard Hat 一起使用,例如:
npm install --save-dev @openzeppelin/contracts npm install --save-dev @openzeppelin/hardhat-upgrades npm install --save-dev @nomiclabs/hardhat-ethers ethers # peer dependencies
https://docs.openzeppelin.com/upgrades-plugins/1.x/hardhat-upgrades
但它仍然無法正常工作,即使我可以看到它安裝在
node_modules
.這是我的
package.json
依賴項:{ "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.4", "@nomiclabs/hardhat-waffle": "^2.0.1", "@openzeppelin/contracts": "^4.4.2", "@openzeppelin/hardhat-upgrades": "^1.13.0", "chai": "^4.3.4", "ethereum-waffle": "^3.4.0", "ethers": "^5.5.3", "hardhat": "^2.8.0" }, "dependencies": {} }
這裡是
hardhat.config.js
:require('@nomiclabs/hardhat-waffle'); require("@nomiclabs/hardhat-ethers"); require('@openzeppelin/hardhat-upgrades'); module.exports = { solidity: '0.8.0', networks: { ropsten: { url: 'https://eth-ropsten.alchemyapi.io/v2/cds................Fa', accounts: ['private key'] } } }
我對安全帽很陌生,這是我的第一個項目。
編輯
我通過將
import
路徑更改為:import "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol";
但是當我執行一些測試時,
npx hardhat test
我編譯失敗了:所以我恢復正常
import "@openzeppelin/.../ERC20.sol";
,它編譯成功,但我的 VSC 仍然為此尖叫。所以 HardHat 可以正確讀取這些合約,只是 VSC 存在一些問題,它無法正確讀取這些路徑。有人知道如何解決這個問題嗎?
我通過將導入路徑更改為:
import "../node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol";
但是當我使用 npx hardhat test 執行一些測試時,我編譯失敗了:
所以我回到了正常的import “@openzeppelin/…/ERC20.sol”; 它編譯成功,但我的 VSC 仍然為此尖叫。
所以 HardHat 可以正確讀取這些合約,只是 VSC 存在一些問題,它無法正確讀取這些路徑。