关于GitHub:https://github.com/trufflesuite/truffle/issues/3329的相关问题
如果我用truffle compile编译我的合同,然后用truffle develop打开块菌控制台,那么就会发生这样的情况:
truffle(develop)> version
Truffle v5.1.39 (core: 5.1.39)
Solidity - ^0.6.0 (solc-js)
Node v12.18.2
Web3.js v1.2.1
truffle(develop)> TypeError: Buffer.isBuffer is not a function
at Function.writeFileSync [as sync] (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/write-file-atomic/index.js:213:1)
at Configstore.set all [as all] (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/configstore/index.js:58:1)
at new Configstore (/usr/local/lib/node_modules/truffle/build/webpack:/node_modules/configstore/index.js:25:1)
at Function.getUserConfig (/usr/local/lib/node_modules/truffle/build/webpack:/packages/config/dist/index.js:171:1)
at Object.send (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/services/analytics/index.js:5:1)
at Command.run (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/command.js:137:1)
at Console.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:155:1)
at ReplManager.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/repl.js:129:1)
at bound (domain.js:426:14)
at REPLServer.runBound [as eval] (domain.js:439:12)
at REPLServer.onLine (repl.js:760:10)
at REPLServer.emit (events.js:315:20)
at REPLServer.EventEmitter.emit (domain.js:482:12)
at REPLServer.Interface._onLine (readline.js:329:10)
at REPLServer.Interface._line (readline.js:658:8)
at REPLServer.Interface._ttyWrite (readline.js:999:14)
at REPLServer.self._ttyWrite (repl.js:851:9)
at ReadStream.onkeypress (readline.js:205:10)
at ReadStream.emit (events.js:315:20)
at ReadStream.EventEmitter.emit (domain.js:482:12)
at emitKeys (internal/readline/utils.js:335:14)
at emitKeys.next (<anonymous>)原因似乎是命名冲突(但事实并非如此)。好吧..。是的但是..。(见下文)。但另一个问题是: Openzeppelin和chainlink都包含一个SafeMath合同:
Compiling your contracts...
===========================
> ...
> Compiling @chainlink/contracts/src/v0.6/vendor/SafeMath.sol
> ...
> Compiling @openzeppelin/contracts/math/SafeMath.sol
> Duplicate contract names found for SafeMath.
> This can cause errors and unknown behavior. Please rename one of your contracts.如何同时使用链链接和openzeppelin来解决这个问题。只有两个完全独立的合同才有可能通过事务进行通信吗?或者我在这里得不到什么?
所以..。实际的问题似乎只是链接和/或松露。
虽然问题仍然存在,如何解决这些命名冲突,但我意识到,Buffer.isBuffer问题与其无关,而与链接/松露本身有关。
例如,如果我从openzeppelin中导入一些东西,比如Ownable,一切都很好。但是,如果我导入链接并从ChainlinkClient继承,松露控制台在我第一次编译契约时就会崩溃。
我录了这个,看这里:https://youtu.be/InNPguD3h6g
原来,当您有一个具有此名称的契约时,本机节点对象缓冲区将被覆盖。在一般情况下,契约名称可能与本机节点对象冲突。
关于GitHub:https://github.com/trufflesuite/truffle/issues/3329的相关问题
发布于 2020-08-31 21:05:33
当前,当使用Tru显控制台时,为了方便起见,它会加载所有的契约名称,以便您可以访问已部署的合同等。但是,当有与Node本机对象冲突的合同名称时,这会引起问题;在本机Buffer对象的情况下,这种情况下会出现问题。如果你有一个名为"String“的合同,那就有点像。这将覆盖本机String对象,并且它将变得不可访问。
因此,希望这是可以修复的东西,也许可以为合同名称提供一个名称空间,这些名称与上下文中已经存在的名称冲突。
https://ethereum.stackexchange.com/questions/87030
复制相似问题