代码之家  ›  专栏  ›  技术社区  ›  Muhammad Altabba

块菌调试器:TypeError:无法读取未定义的属性“line”

  •  1
  • Muhammad Altabba  · 技术社区  · 6 年前

    我正在尝试使用Truffle 4.1.0调试Solidity代码。 调试器正确启动,显示第一行,但您不能单步执行契约!

    终端上显示的错误的完整堆栈跟踪是:

     TypeError: Cannot read property 'line' of undefined
         at Object.formatRangeLines (/usr/local/lib/node_modules/truffle/build/webpack:/~/truffle-debug-utils/index.js:201:1)
         at printState (/usr/local/lib/node_modules/truffle/build/webpack:/~/truffle-core/lib/commands/debug.js:125:1)
         at Object.interpreter (/usr/local/lib/node_modules/truffle/build/webpack:/~/truffle-core/lib/commands/debug.js:404:1)
         at ReplManager.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/~/truffle-core/lib/repl.js:119:1)
         at bound (domain.js:280:14)
         at REPLServer.runBound [as eval] (domain.js:293:12)
         at REPLServer.<anonymous> (repl.js:539:10)
         at emitOne (events.js:96:13)
         at REPLServer.emit (events.js:188:7)
         at REPLServer.Interface._onLine (readline.js:232:10)
         at REPLServer.Interface._line (readline.js:583:8)
         at REPLServer.Interface._ttyWrite (readline.js:860:14)
         at REPLServer.self._ttyWrite (repl.js:612:7)
         at ReadStream.onkeypress (readline.js:119:10)
         at emitTwo (events.js:106:13)
         at ReadStream.emit (events.js:191:7)
         at emitKeys (internal/readline.js:389:14)
         at next (native)
         at ReadStream.onData (readline.js:970:36)
         at emitOne (events.js:96:13)
         at ReadStream.emit (events.js:188:7)
         at readableAddChunk (_stream_readable.js:176:18)
         at ReadStream.Readable.push (_stream_readable.js:134:10)
         at TTY.onread (net.js:547:20)
    

    挖掘方法 formatRangeLines: function(source, range, contextBefore) 什么时候 console.log(range); 它打印:

    { start: undefined, end: undefined }
    

    实际上,访问时引发的异常 range.start 在该街区:

    var startBeforeIndex = Math.max(
      range.start.line - contextBefore, 0
    );
    

    有什么建议吗? 谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   Muhammad Altabba    5 年前

    更新时间: 此问题已在Truffle版本4.1.4中解决( reference )。

    然而,如果你更新了你的块菌版本,但你仍然面临这个问题。尝试在控制台上运行(这是为了强制更新所有已编译的智能合约字节码,使其符合最新版本):

    truffle migrate --reset --compile-all


    由于当前版本的Truffle调试器(即实验版本)存在错误,调试器无法跳转到其他文件。

    此处出现错误: https://github.com/trufflesuite/truffle/issues/826

    因此,为了克服当前的bug,所有智能合约代码都必须在一个文件中。希望有一种工具可以帮助您做到这一点: https://github.com/poanetwork/solidity-flattener