(无效的 asm.js:stdlib 成员无效)在尝试编译 Solidity 0.4.17 时
(无效的 asm.js:stdlib 成员无效)在尝试编译 Solidity 0.4.17 时
(无效的 asm.js:stdlib 成员无效)在尝试编译 Solidity 0.4.17 时
const path = require('path');
const fs = require('fs-extra');
const solc = require('solc');
const buildPath = path.resolve(__dirname, 'build');
fs.removeSync(buildPath);
const contractPath = path.resolve(__dirname, 'contracts', 'Campaign.sol');
const source = fs.readFileSync(contractPath, 'utf8');
const output = solc.compile(source, 1).contracts;
fs.ensureDirSync(buildPath);
for (let contract in output) {
fs.outputJsonSync(
path.resolve(buildPath, contract.replace(':', '') + '.json'),
output[contract]
);
}
有同样的问题,为我解决的是更改 Solidity 编译器的版本。我随意选择了它,然后工作了。 我在控制台输入:
npm install [email protected]
您可能会遇到影响 0.4.25 二进制文件的相同问题:asm.js 构建 soljson 0.4.25 在 node.js 14+ 上失败#537。
不幸的是,我不知道原因是什么,但如果是同样的问题,那么只需下载 wasm 二进制文件即可解决它:
emscripten-wasm32/solc-emscripten-wasm32-v0.4.17+commit.bdeb9e52.js
。
wasm 二进制文件也应该比 asm.js 更快,所以我建议始终使用它们。
问题是输出中没有契约结果(solc编译器的const)。
这只是因为输出为空 {},您的 Solidity 代码中有错误。执行 console.log 查看输出结果以确认这一点。
要了解为什么输出为空,我建议您首先执行此操作,以便查看您的 Solidity 代码中的错误位置
const output = solc.compile(source, 1);
console.log(output);
你会得到这样的东西 控制台出错