(无效的 asm.js:stdlib 成员无效)在尝试编译 Solidity 0.4.17 时

问题描述 投票:0回答:4

(无效的 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]
    );
}
node.js ethereum solidity web3js
4个回答
1
投票

有同样的问题,为我解决的是更改 Solidity 编译器的版本。我随意选择了它,然后工作了。 我在控制台输入:

npm install [email protected]

0
投票

您可能会遇到影响 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 更快,所以我建议始终使用它们。


0
投票

问题是输出中没有契约结果(solc编译器的const)。


0
投票

这只是因为输出为空 {},您的 Solidity 代码中有错误。执行 console.log 查看输出结果以确认这一点。

要了解为什么输出为空,我建议您首先执行此操作,以便查看您的 Solidity 代码中的错误位置

const output = solc.compile(source, 1);
console.log(output);

你会得到这样的东西 控制台出错

© www.soinside.com 2019 - 2024. All rights reserved.