인프런 커뮤니티 질문&답변

MINSEONG HEO님의 프로필 이미지
MINSEONG HEO

작성한 질문수

리액트로 구현하는 블록체인 이더리움 Dapp

배포(2)

hello.say() is not a function

작성

·

180

2

배포2 단원에서 truffle console --network development 후

truffle(development)> var hello = HelloWorld.at("0x9876ff5b2729D2800f87852F7be329D32B35c244")
undefined
truffle(development)> hello.say()
Thrown:
evalmachine.:0
hello.say()
^

TypeError: hello.say is not a function
at evalmachine.:0:7
at Script.runInContext (vm.js:135:20)
at runScript (C:Users데모버전AppDataRoamingnpmnode_modulestrufflebuildwebpack:packagestruffle-corelibconsole.js:199:1)
at Console.interpret (C:Users데모버전AppDataRoamingnpmnode_modulestrufflebuildwebpack:packagestruffle-corelibconsole.js:213:1)
at ReplManager.interpret (C:Users데모버전AppDataRoamingnpmnode_modulestrufflebuildwebpack:packagestruffle-corelibrepl.js:118:1)
at bound (domain.js:425:14)
at REPLServer.runBound [as eval] (domain.js:438:12)
at REPLServer.onLine (repl.js:650:10)
at REPLServer.emit (events.js:197:13)
at REPLServer.EventEmitter.emit (domain.js:481:20)
이렇게 에러가 뜨는데 어떻게 해결해야 하나요?

답변 3

3

버전이 달라서 저는 지금 마이그레이트를 하면 프롬프트에 이렇게 떠서 HelloWorld를 디플로이 했을 시 생긴 컨트랙트주소 부분을 사용해야 언디파인드가 되고 hello.say()를 했을 시 문자열이 잘나타났습니다! 혹시 저와 같은 버전으로 하고 계신분들 참고해주세요!

Compiling your contracts...

===========================

> Everything is up to date, there is nothing to compile.

Starting migrations...

======================

> Network name:    'development'     

> Network id:      5777

> Block gas limit: 6721975 (0x6691b7)

1_initial_migration.js

======================

   Deploying 'Migrations'

   ----------------------

   > transaction hash:    0xa83a42953525bba41c94b902b3bcfa09dc90fcf3a18a77f66b52b797cefc7758

   > Blocks: 0            Seconds: 0

   > contract address:    0x5B6c3496D20404A3e0755487B2d809D7174E2cC9

   > block number:        1

   > block timestamp:     1614761582

   > account:             0xFfc1DC506c8D47144DBA97435b102FaE4c5BD39b

   > balance:             99.99616114

   > gas used:            191943 (0x2edc7)

   > gas price:           20 gwei

   > value sent:          0 ETH

   > total cost:          0.00383886 ETH

   > Saving migration to chain.

   > Saving artifacts

   -------------------------------------

   > Total cost:          0.00383886 ETH

2_hello_deploy.js

=================

   Deploying 'HelloWorld'

   ----------------------

   > transaction hash:    0xe3769cf3541753b8ad4a76c5a52da9926368a39cd5c1e7a9cf9a72dfc1a162c4

   > Blocks: 0            Seconds: 0

   > contract address:    0xe5A71c2b65D2BB74D25121EBfd73C979854F086e

   > block number:        3

   > block timestamp:     1614761583

   > account:             0xFfc1DC506c8D47144DBA97435b102FaE4c5BD39b

   > balance:             99.989001

   > gas used:            315669 (0x4d115)

   > gas price:           20 gwei

   > value sent:          0 ETH

   > total cost:          0.00631338 ETH

   > Saving migration to chain.

   > Saving artifacts

   -------------------------------------

   > Total cost:          0.00631338 ETH

Summary

=======

> Total deployments:   2

> Final cost:          0.01015224 ETH

1

coldmind님의 프로필 이미지
coldmind
지식공유자

먼저 트러플 버전을 확인하고

truffle version

5.x대의 버전이라면 Contract.at 사용시 다음과 같이 await를 앞에 써주어야 합니다.

var hello = await HelloWorld.at("0x9876ff5b2729D2800f87852F7be329D32B35c244")

트러플 버전 4.x에서는 await를 붙이지 마시고요.

0

MINSEONG HEO님의 프로필 이미지
MINSEONG HEO
질문자

감사합니다 덕분에 해결 되었습니다.

MINSEONG HEO님의 프로필 이미지
MINSEONG HEO

작성한 질문수

질문하기