Solc

無法擺脫來自 solc-js “AssertionError”的錯誤和RR一種小號小號和RT一世開_和RR一種小號小號和R噸一世這ñERR_ASSERTION:指定的回調無效。”

  • March 27, 2022
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');
solc.compile(source,1);

這是我的錯誤:

kowsik@kowsik:~/Desktop/etherium_project$ node compile.js
assert.js:43
 throw new errors.AssertionError(obj);
 ^

AssertionError [ERR_ASSERTION]: Invalid callback specified.
   at wrapCallback (/home/kowsik/Desktop/etherium_project/node_modules/solc/wrapper.js:16:5)
   at runWithReadCallback (/home/kowsik/Desktop/etherium_project/node_modules/solc/wrapper.js:42:26)
   at compileStandard (/home/kowsik/Desktop/etherium_project/node_modules/solc/wrapper.js:83:14)
   at Object.compileStandardWrapper (/home/kowsik/Desktop/etherium_project/node_modules/solc/wrapper.js:90:14)
   at Object.<anonymous> (/home/kowsik/Desktop/etherium_project/compile.js:7:6)
   at Module._compile (module.js:653:30)
   at Object.Module._extensions..js (module.js:664:10)
   at Module.load (module.js:566:32)
   at tryModuleLoad (module.js:506:12)
   at Function.Module._load (module.js:498:3)

使用較舊的 solc 版本,例如 “solc”: “^0.4.25”

如果您使用的是新版本的solidity(目前我的是0.6.1):那麼下面的程式碼應該適合您!

這裡只是數據格式發生了變化,因為新版本不支持您使用的格式,所以我們定義了 o/p 的數據類型並將 json 數據轉換為字元串。

module.exports = solc.compile(
 JSON.stringify({
   language: "Solidity",
   sources: {
     "lottery.sol": {
       content: source
     }
   },
   settings: {
     outputSelection: {
       "*": {
         "*": ["evm", "bytecode"]
       }
     }
   }
 })
);

引用自:https://ethereum.stackexchange.com/questions/64457