命令 '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 发布并收工了。
大家好,我正在开发彩票智能合约。我目前已完成混音 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 发布并收工了。