命令 'Solidity: Compile Contract' 导致错误(无法读取未定义的属性(读取 'uri'))

Command 'Solidity: Compile Contract' resulted in an error (Cannot read properties of undefined(reading 'uri'))

大家好,我正在开发彩票智能合约。我目前已完成混音 VM 测试,并继续使用 JavaScript 进行单元测试。 test.js 文件如下所示。

const assert = require('assert');
const ganache = require('ganache-cli');
const Web3 = require('web3');
const web3 = new Web3(ganache.provider());

const { abi, bytecode } = require('../compile')

let lottery;
let accounts;

beforeEach(async() => {
    accounts = await web3.eth.getAccounts();

    lottery = await new web3.eth.Contract(JSON.parse(abi))
    .deploy({ data: evm.bytecode.object })
    .send({ from: accounts[0], gas: 1000000});
});

describe('Lottery Contract', () => {
    it('deploys a contract', () => {
        assert.ok(lottery.options.address);
    });
});

目前的测试文件只检查合约是否部署,非常简单。但是,由于特定错误,我无法从这里继续。详情如下。我检查了语法和拼写错误,但对我来说一切都很好。下面提供了有关 compile.js 和错误的详细信息

compile.js 文件:

const path = require("path");
const fs = require("fs");
const solc = require("solc");

const lotteryPath = path.resolve(__dirname, "contracts", "Lottery.sol");
const source = fs.readFileSync(lotteryPath, "utf8");

const input = {
    language: 'Solidity',
    sources: {
        'Lottery.sol': {
            content: source
        }
    },
    settings: {
        outputSelection: {
            '*': {
                '*': ['*'],
            }
        }
    }
};

// console.log(JSON.parse(solc.compile(JSON.stringify(input))).contracts);
module.exports = JSON.parse(solc.compile(JSON.stringify(input))).contracts[
     'Lottery.sol'
 ].Lottery;

错误信息:

我在 lottery.sol 文件中使用了导入。

我目前正在为我正在发布的 NFT 调试相同的错误...我将本地目录导入到我的 Remix 工作区并且它编译得很好...这让我相信问题是不匹配编译器版本之间...不确定。 VS Code 让我很恼火,所以我刚刚通过 Remix 发布并收工了。