从Chainlink导入:找不到源.文件超出了允许的目录



我已经多次遇到这个问题。每次我试图从github导入一些东西并将其添加到纱线包管理器中时,我都会看到下面的错误。这一次,我一直在处理Solidity合同,想从chianlink仓库导入一些东西。我发现的一个解决方法是复制所需的文件,并将其直接包含在项目中,但我不想这样做。所以,我想要一个解决方案来解决这个问题,而不是绕过它

我正在使用以下内容:

VsCode
WSL 2.0
Hardhat Framework
Yarn Package Manager

所以问题是当我尝试导入时:

import "@chainlink/contracts/src/v0.8/VRFV2WrapperConsumerBase.sol";

我显示:

Source "@chainlink/contracts/src/v0.8/VRFV2WrapperConsumerBase.sol" file outside of allowed directories.

我已经做了:

yarn add --dev @chainlink/contracts

这是我的package.json文件内容:

{
"devDependencies": {
"@chainlink/contracts": "^0.5.1",
"@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers",
"@nomiclabs/hardhat-etherscan": "^3.1.0",
"@nomiclabs/hardhat-waffle": "^2.0.3",
"chai": "^4.3.6",
"dotenv": "^16.0.3",
"ethereum-waffle": "^3.4.4",
"ethers": "^5.7.1",
"hardhat": "^2.11.2",
"hardhat-contract-sizer": "^2.6.1",
"hardhat-deploy": "^0.11.18",
"hardhat-gas-reporter": "^1.0.9",
"prettier": "^2.7.1",
"prettier-plugin-solidity": "^1.0.0-beta.24",
"solhint": "^3.3.7",
"solidity-coverage": "^0.8.2"
}
}

有人能告诉我这个问题的原因是什么吗?如何修复?

尝试将完整的相对路径添加到目录中。例如,如果您的目录中有一个contracts文件夹和node_module文件夹,并且您的contract位于contracts目录中,那么您的chainlink contract的导入语句将如下所示:

import "../node_modules/@chainlink/contracts/src/v0.8/VRFV2WrapperConsumerBase.sol";

我已经面对这个问题好几次了,并且发现这是可行的。

最新更新