首页 > 解决方案 > 松露编译失败

问题描述

每当我尝试使用solidity编译任何solidity项目时,特别是像truffle compile这样的命令,它会给我一个错误PS我尝试了其他解决方案,比如重命名truffle.cmd或调用truffle.cmd而不是truffle,但没有任何效果,我使用了windows cmd或Git Bash同样的错误。

> Omar@LAPTOP-F8C4IRVO MINGW64 /e/College/Semester 7/Grad Project/eth-smart-contracts-master/eth-smart-contracts-master/01-HelloWorld/finish
$ truffle compile

Compiling your contracts...
===========================
C:\Users\omaro\AppData\Roaming\npm\node_modules\truffle\node_modules\solc\soljson.js:1
(function (exports, require, module, __filename, __dirname) { var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);var ret=nodeFS["

SyntaxError: Invalid regular expression: /C:\Users\omaro\AppData\Roaming\npm\node_modules\/: \ at end of pattern
    at new RegExp (<anonymous>)
    at Object.<anonymous> (C:\Users\omaro\AppData\Roaming\npm\node_modules\truffle\build\webpack:\packages\truffle-core\cli.js:93:1)
    at cb (util.js:353:39)
    at callbackifyOnRejected (util.js:337:10)
    at process._tickCallback (internal/process/next_tick.js:63:19)

我还在学习solidity和truffle,所以代码很简单,我没有太多空间犯错。我的参考是https://medium.com/etherereum-salon/hello-ethereum-solan-contract-4643118a6119

标签: node.jsnpmethereumsoliditytruffle

解决方案


我的合同也有同样的错误。检查你的 solc 编译器版本 truffle version并检查你的合约的可靠版本。在我的例子中,编译器是 Solidity v0.5.0 (solc-js),但pragma solidity ^0.4.11;我只是简单地将其更改为合同pragma solidity ^0.5.0并将代码重新格式化为它的版本要求,之后合同编译得很好。解决问题的另一种方法是通过添加以下内容来编辑松露配置:

compilers: {
        solc: {
          version: "^0.4.23" // A version or constraint - Ex. "^0.5.0"
    }
}

推荐阅读