尝试运行节点compile.js,但它通过我上面提到的错误和想法,我正在做的错误

我的inbox.sol
pragma solidity ^0.8.9;
contract Inbox{
string public message;
function Inbox(string intialMessage) public {
message = intialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}我的package.json
{
"dependencies": {
"ganache-cli": "^6.12.2",
"mocha": "^9.1.3",
"solc": "^0.8.9",
"web3": "^1.6.0"
}
}我是这项技术的初学者,非常感谢您的宝贵时间。
发布于 2021-11-11 00:21:02
只需在函数参数中的两个字符串后面添加内存即可。
函数收件箱(String memory initialMessage)...和函数setMessage(string memory newMessage)...
发布于 2021-11-12 06:57:30
该课程已经过时,solidity版本0.6.6已经发布,您最好将代码更新到该版本。如果你不是一个好的程序员,你最好退还这门课,因为你以后会遇到很多问题,你会看到一些使用元掩码和Web3的错误。这门课程教会了你很多东西,所以我真的建议你继续学习这门课程,并在整个课程中不断更新自己。这是第一个问题,更新版本的解决方案是这样的。
这将是你的"inbox.sol“代码:
pragma solidity ^0.6.6;
contract Inbox{
string public message;
constructor (string memory initialMessage) public{
message = initialMessage;
}
function setMessage(string memory newMessage) public{
message = newMessage;
}
}这将是你的"compile.js“代码:
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxpath = path.resolve(__dirname, 'Contracts', 'Inbox.sol');
const source = fs.readFileSync(inboxpath, 'UTF-8');
var input = {
language: 'Solidity',
sources: {
'Inbox.sol' : {
content: source
}
},
settings: {
outputSelection: {
'*': {
'*': [ '*' ]
}
}
}
};
var output = JSON.parse(solc.compile(JSON.stringify(input)));
exports.abi = output.contracts['Inbox.sol']['Inbox'].abi;
exports.bytecode = output.contracts['Inbox.sol'] ['Inbox'].evm.bytecode.object;在新的稳定性中,编译器将提供与旧编译器相比的另一个编译代码版本,因此您需要将json文件传递给您的编译器,并且为了访问abi(接口)和字节码,您需要像我在这里所做的那样做。
发布于 2021-11-25 00:47:43
它将与solc版本0.4.17一起工作。
https://stackoverflow.com/questions/69915001
复制相似问题