Я изо всех сил пытаюсь скомпилировать мой код Solidity в папку сборки.Я использую файловую систему узла, чтобы сделать это, но мне чего-то не хватает.В настоящее время я получаю эту ошибку:
fs.js:663
return binding.open(pathModule.toNamespacedPath(path),
^
Error: ENOENT: no such file or directory, open '/Users/Gary/Desktop/charity/ethereum/build/Charity.json'
at Object.fs.openSync (fs.js:663:18)
at Object.fs.writeFileSync (fs.js:1314:33)
at Object.<anonymous> (/Users/Gary/Desktop/charity/ethereum/compile.js:37:12)
at Module._compile (module.js:641:30)
at Object.Module._extensions..js (module.js:652:10)
at Module.load (module.js:560:32)
at tryModuleLoad (module.js:503:12)
at Function.Module._load (module.js:495:3)
at Function.Module.runMain (module.js:682:10)
at startup (bootstrap_node.js:191:16)
Я попытался следовать примеру здесь:
Как скомпилировать твердость, используя solc 0.5
мой файл compile.js выглядит следующим образом
const path = require('path');
const solc = require('solc');
const fs = require('fs-extra');
const buildPath = path.resolve(__dirname, 'build');
fs.removeSync(buildPath);
const charityPath = path.resolve(__dirname, 'contracts', 'Charity.sol');
const source = fs.readFileSync(charityPath, 'utf8');
var input = {
language: 'Solidity',
sources: {
'Charity.sol': {
content: source
}
},
settings: {
outputSelection: {
'*': {
'*': [ '*' ]
}
}
}
}
const output = JSON.parse(solc.compile(JSON.stringify(input)));
if(output.errors) {
output.errors.forEach(err => {
console.log(err.formattedMessage);
});
} else {
const contracts = output.contracts["Charity.sol"];
for (let contractName in contracts) {
const contract = contracts[contractName];
fs.writeFileSync(path.resolve(buildPath, `${contractName}.json`), JSON.stringify(contract.abi, null, 2), 'utf8');
}
}
Я ожидаю уничтожать и обновлять папку build
при каждой компиляции.Папка build
перейдет в папку ethereum
.Оттуда я ожидаю скомпилировать код Solidity из Charity.sol
и поместить его в формате JSON в виде файла в папку build
.
Вместо этого я получаю вышеуказанную ошибку.Я считаю, что это ошибка из-за фундаментального недопонимания файловой системы.Тем не менее, я ценю любого, кто нашел бы время, чтобы посмотреть это.Я могу предоставить больше информации по запросу.