Visual Code Studio, обратный вызов при импорте файла не поддерживается - источник файла не найден
Пытаясь устранить другую проблему с моим проектом, я, должно быть, что-то сломал, но я не знаю, как это исправить.
Это мои операторы импорта для проекта:
pragma solidity >=0.6.6;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";
А это мой домовой-config.yaml
depencencies:
- OpenZeppelin/openzeppelin-contracts@3.4.0
- smartcontractkit/chainlink-brownie-contracts@1.0.2
compiler:
solc:
remappings:
- '@openzeppelin=OpenZeppelin/openzeppelin-contracts@3.4.0'
- '@chainlink=smartcontractkit/chainlink-brownie-contracts@1.0.2'
Но, несмотря на то, что все это работало до вчерашнего дня, попытка компиляции дает мне только следующие ошибки:
PS C:\Users\XXX\Desktop\Project> brownie compile
INFO: Could not find files for the given pattern(s).
Brownie v1.16.4 - Python development framework for Ethereum
New compatible solc version available: 0.6.6
Compiling contracts...
Solc version: 0.6.6
Optimizer: Enabled Runs: 200
EVM Version: Istanbul
CompilerError: solc returned the following errors:
contracts/AdvancedCollectible.sol:3:1: ParserError: Source "OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/token/ERC721/ERC721.sol" not found: File not found.
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
^-------------------------------------------------------^
contracts/AdvancedCollectible.sol:4:1: ParserError: Source "smartcontractkit/chainlink-brownie-contracts@1.0.2/contracts/src/v0.6/VRFConsumerBase.sol" not found: File not found.
import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol";
^---------------------------------------------------------^
Как мне решить эту проблему? Я видел несколько ответов на аналогичные проблемы со ссылками на node.js или локальные копии материалов, которые я пытаюсь импортировать, но разве эта команда не должна извлекать данные из github? Почему этого не происходит ниоткуда?
2 ответа
Это связано с тем, что расширение Solidity ищет не в том каталоге. Шаг ниже исправил проблему для меня -
Измените настройки расширения Solidity в VSCode.
Настройки по умолчанию включают: "solidity.packageDefaultDependenciesContractsDirectory": "contracts" Пользователям необходимо изменить настройку с Contracts на пустую строку. "solidity.packageDefaultDependenciesContractsDirectory": ""
Источник - https://github.com/juanfranblanco/vscode-solidity/issues/178
Установите Openzeppelin в корень вашей папки с помощью npm.
npm i @openzeppelin/контракты
то же самое для цепной связи