Ich weiß nicht, was dieser Fehler bedeutet oder wie ich ihn beheben kann.
Ich versuche, dem hier befindlichen Tutorial zu folgen, und wenn ich an den Punkt komme, an dem ich "Trüffeltest" ausführen muss, erhalte ich die folgende Fehlermeldung.
with TestAdoption "before all" hook: prepare suite: Error: Could not find artifacts for ''EthereumPetShopTutorial/contracts/Adoption.sol" from any sources
Ausgabe vonTruffle version
Truffle v4.1.5 (core: 4.1.5)
Solidity v0.4.21 (solc-js)
Dies ist meine Datei 2_deploy_contracts.js
var Adoption = artifacts.require("Adoption");
module.exports = function(deployer) {
deployer.deploy(Adoption);
};
Dies ist meine TestAdoption.sol-Datei:
pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/Adoption.sol";
contract TestAdoption {
Adoption adoption = Adoption(DeployedAddresses.Adoption());
// Testing the adopt() function
function testUserCanAdoptPet() public {
uint returnedId = adoption.adopt(8);
uint expected = 8;
Assert.equal(returnedId, expected, "Adoption of pet ID 8 should be recorded.");
}
}
Dies ist meine Dateistruktur:
Mit der neuesten Truffle-Version stimmt etwas nicht. Um dieses Problem zu lösen, musste ich die folgenden Dinge tun, um eine funktionierende Trüffelversion zu finden.
Suchen Sie zunächst mit dem folgenden Befehl nach verfügbaren Truffle-Versionen.
npm view truffle versions
Dann für jedes Element auf der Liste, beginnend mit der neuesten Version. Ich habe Trüffel mit deinstalliert
npm uninstall -g truffle
dann die nächstälteste Version mit installiert
npm install -g truffle@<version#>
Dann den Build-Ordner gelöscht
dann das Projekt mit kompiliert
truffle compile
dann rannte
truffle test
Wenn dies fehlschlägt, fahren Sie mit der nächstälteren Version fort und wiederholen Sie den Test.
In meinem Fall war eine funktionierende Version von Truffle 4.1.4
Der Vertrag kann nicht gefunden werden. Es sollte sich im ./contracts
Ordner relativ zu Ihrem aktuellen Arbeitsverzeichnis befinden.
Der Compiler wird Vertragsabstraktionen erstellen und diese in den ./build/contracts
Ordner you.
Es wird gesagt, dass man dorthin gehen soll, um Adoption.sol
durch diese Zeile zu finden:
var Adoption = artifacts.require("Adoption");
Ich hoffe es hilft.
ps Wenn dies nicht ausreicht, teilen Sie uns die tatsächliche Version des Trüffels mit, die Sie verwenden (weil sich Änderungen ergeben).
$ truffle version
Dasselbe Problem mit 4.1.5, ein Rollback auf 4.1.4 hat es behoben.
Travis Rivera
Rob Hitchens
./build
Ordner zerstören und danntruffle compile
.Travis Rivera