首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链式链接导入导致Truffle崩溃

链式链接导入导致Truffle崩溃
EN

Ethereum用户
提问于 2020-08-29 02:35:56
回答 1查看 803关注 0票数 4

关于GitHub:https://github.com/trufflesuite/truffle/issues/3329的相关问题

如果我用truffle compile编译我的合同,然后用truffle develop打开块菌控制台,那么就会发生这样的情况:

代码语言:javascript
复制
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合同:

代码语言:javascript
复制
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的相关问题

我的项目:https://github.com/mktcode/mergepay-contracts

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-08-31 21:05:33

当前,当使用Tru显控制台时,为了方便起见,它会加载所有的契约名称,以便您可以访问已部署的合同等。但是,当有与Node本机对象冲突的合同名称时,这会引起问题;在本机Buffer对象的情况下,这种情况下会出现问题。如果你有一个名为"String“的合同,那就有点像。这将覆盖本机String对象,并且它将变得不可访问。

因此,希望这是可以修复的东西,也许可以为合同名称提供一个名称空间,这些名称与上下文中已经存在的名称冲突。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/87030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档