javascript - ParserError:预期的编译指示、导入指令或合同/接口/库定义
问题描述
"ParserError: Expected pragma, import directive or contract/interface/library definition"
每次我使用compile.js
withnode compile.js
命令编译我的solidity 文件时都会收到此错误Inbox.sol
。这个错误我google了一下,有两种解决方法,一种是因为我的语法错误,比如 no ;
,另一种是因为solidity编译器。我检查了我的solidity 版本和语法,我找不到任何错误。请帮忙!
我已经尝试过了,但这不是我的solidity版本,如果我将代码更改为contructor
语法,它会弹出错误。
收件箱.sol
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"
}
}
包-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"
}
},
解决方案
我把我的 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,'utf8');
console.log(solc.compile(source,1));
然后它起作用了!!!
推荐阅读
- javascript - 如何在 JavaScript 中创建构造函数(module.exports)
- arrays - 你能在 C 语言的另一个结构中创建一个结构数组吗?
- reactjs - 使用 Firebase Admin SDK 验证 ID 令牌
- wordpress - Wordpress footer_wp 问题重复内容
- django - 消息:新应用程序对象缺少必需的属性
- lua - 以编程方式创建局部变量(在 Lua 中)
- angularjs - 使用 JWT 令牌和 URL 中的 ID 调用 API
- bash - 我可以在 shell 脚本中暂时停止“tee”吗?
- google-apps-script - 如何在 Google 表格中查询一堆 CSV 文件?
- javascript - 打字稿错误 TS2583 找不到名称“设置”