2017-09-07 7 views
1

나는 어떻게 artifacts.require이 사용되어야하는지 이해하려고 노력하고있다. 마이그레이션 및 테스트 용으로 설명하는 표준 단락을 보았습니다. 이를 통해 전 세계적으로 범위가 artifacts이고 그 방법이 require 인 경우 마이 그 레이션 또는 테스트를 실행할 때 트러 플 실행 도구가 자동으로 정의합니다. 그러나 어떤 마이그레이션이나 테스트의 컨텍스트 외부에서 artifacts.require을 사용하는 코드로 작업하고 있는데,이 코드는 보통 atnew을 수행하면됩니다. 그러나이 문맥에서는 객체 artifacts이 정의되지 않습니다.artifacts.require의 올바른 사용?

여기에 맞는 그림이 있습니까? 이것은 artifacts.require의 적절한 사용입니까? 그렇다면 마이그레이션 및 테스트 외부에서 정의되도록하려면 어떻게해야합니까?

의견을 보내 주셔서 감사합니다.

답변

5

artifacts.require는 실제로 테스트 외부에서 사용하기위한 것이 아닙니다. 이것은이 정의 된 곳이다 : https://github.com/trufflesuite/truffle-core/blob/3e96337c32aaae6885105661fd1a6792ab4494bf/lib/test.js#L240

때 생산 코드에 당신이 짧은 예를 여기 트 뤼프 계약 https://github.com/trufflesuite/truffle-contract

이다 사용하여 응용 프로그램에 컴파일 된 계약을로드해야합니다 (http://truffleframework.com/docs/getting_started/packages-npm#within-javascript-code에서 볼 http://truffleframework.com/docs/getting_started/contracts#making-a-transaction)

var contract = require("truffle-contract"); 
var contractJson = require("example-truffle-library/build/contracts/SimpleNameRegistry.json"); 
var SimpleNameRegistry = contract(contractJson); 
SimpleNameRegistry 
    .deployed() 
    .then(function(instance) { 
    return instance.setRegistry(address); 
    }) 
    .then(function(result) { 
    // If this callback is called, the transaction was successfully processed. 
    alert("Transaction successful!") 
    }) 
    .catch(function(e) { 
    // There was an error! Handle it. 
    }); 
+0

EthPM을 통해 설치된 패키지에서 컴파일 된 코드를 어떻게 구할 수 있습니까? 트러플 오피스의 예제는 테스트가 아닌 작품에서 artifacts.require를 사용합니다. http://truffleframework.com/docs/getting_started/packages-ethpm – rhlsthrm