解析器错误:预期的杂注、导入指令或协定/接口/库定义



每次我"ParserError: Expected pragma, import directive or contract/interface/library definition"compile.jsnode compile.js命令编译我的 solidity 文件Inbox.sol时,我都会收到此错误。我用谷歌搜索过这个错误,有两种解决方案,一种是因为我的语法错误,比如没有;,另一种是因为 solidity 编译器。我已经检查了我的 solidity 版本和语法,找不到任何错误。请帮忙!

我已经尝试过这个,但它不是我的 solidity 版本,如果我将我的代码更改为contructor语法,它会弹出错误。

收件箱

pragma solidity ^0.4.17;
contract Inbox{
string public message;
function Inbox(string initialMessage)public{
message = initialMessage;
}
function setMessage(string newMessage) public{
message = newMessage;
}
}

编译.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,'utf8');
console.log(solc.compile(JSON.stringify({
language: 'Solidity',
sources: {
'Inbox.sol': {
content: source,
},
},
settings: {
outputSelection: {
'*': {
'*': ['evm', 'bytecode'],
},
},
},
})));

包.json

{
"name": "error",
"version": "1.0.0",
"description": "",
"main": "compile.js",
"scripts": {
"test": "mocha"
},
"author": "",
"license": "ISC",
"dependencies": {
"solc": "^0.4.17"
}
}

package-lock.json

"solc": {
"version": "0.4.17",
"resolved": "https://registry.npmjs.org/solc/-/solc-0.4.17.tgz",
"integrity": "sha512-39Tmo2r+qclwW7ooLXMLzMSxmoGtHy3/p2sDKdA9NM/+MRtzLm/AFKj4BY2Cocg3gwkfJzKTEx6X0wiI4fIZ/A==",
"requires": {
"fs-extra": "^0.30.0",
"memorystream": "^0.3.1",
"require-from-string": "^1.1.0",
"semver": "^5.3.0",
"yargs": "^4.7.1"
}
},

我将我的编译.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,'utf8');
console.log(solc.compile(source,1));

然后它起作用了!!

最新更新