Sé cómo instalar solc a través de "npm install --save solc" y luego uso solc.compile para compilar un archivo sol. Pero ahora tengo un archivo A.sol que importa el archivo B.sol, y cuando ejecuto node compile.js, no hay error en mi terminal, ¡pero no se genera ningún archivo json!
Pero cuando uso el mismo compile.js para compilar B.sol, funciona. ¿¿¿Por qué??? ¿Cómo solucionar esta función de importación en archivos SOL de Solidity? Gracias.
const pathA = path.resolve(__dirname, 'contracts', 'A.sol');
//to find the path of A.sol inside the folder 'contract' in your project
const pathB = path.resolve(__dirname, 'contracts', 'B.sol');
const solA = fs.readFileSync(pathA, 'utf8');
const solB = fs.readFileSync(pathB, 'utf8');
const input = {
sources: {
'A.sol': solA,
'B.sol': solB
}
};
console.log(solc.compile(input, 1));
Agréguelos como fuentes, sí, pero también agregue una devolución de llamada de importación si usa solcjs.
https://github.com/ethereum/solc-js/issues/114#issuecomment-354752466
Estoy usando @remix-project/remix-solidity
en el navegador, funciona muy bien para mí
Simplemente llame:
const response = await compile(
{
[CONTRACT_FILE_NAME]: {
content: source
}
}
, {
version: SOLIDITY_COMPILER_VERSION
}, handleNpmImport) as CompilerAbstract;
Código fuente: https://github.com/vanduc1102/samples/blob/master/reactjs/cra-solidity-etherjs/package.json
No he podido hacer que solc js importe archivos .sol entre sí; no estoy seguro de si es posible. Mi solución es simplemente combinar todos los archivos .sol en un solo archivo y compilarlo.
alma
Source "<contract>.sol" not found: File import callback not supported
antes de implementar la solución.