2017-09-07 32 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

関連する問題