我正在努力理解如何使用artifacts.require。我看到了描述它的标准段落是用于迁移和测试的。由此,我推断全局范围的artifacts及其方法require是在执行迁移或运行测试时由块菌可执行工具自动定义的。但是,我正在处理一些在任何迁移或测试上下文之外使用artifacts.require的代码,相反,这段代码只需要执行通常的at和new。但是,在这个上下文中,没有定义对象artifacts。
我这里有正确的照片吗?这是artifacts.require的适当使用吗?如果是这样,那么必须做些什么才能使它在迁移和测试之外被定义?
谢谢你的建议!
发布于 2017-09-12 13:14:45
artifacts.require实际上不适合在测试之外使用。这就是定义它的地方:https://github.com/trufflesuite/truffle-core/blob/3e96337c32aaae6885105661fd1a6792ab4494bf/lib/test.js#L240
在生产代码中,您应该使用块菌合同https://github.com/trufflesuite/truffle-contract将已编译的合同加载到应用程序中。
下面是一个简短的示例(来自started/packages-npm#within-javascript-code和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.
});https://stackoverflow.com/questions/46101430
复制相似问题