Ich kann Solc nicht unter Mac OS X installieren. Ich habe Folgendes versucht:
npm install solc
/Users/punddalinni
└── solc@0.3.0-1
npm WARN enoent ENOENT: no such file or directory, open '/Users/punddalinni/package.json'
npm WARN punddalinni No description
npm WARN punddalinni No repository field.
npm WARN punddalinni No README data
npm WARN punddalinni No license field.
Wenn ich zurück nach Geth gehe und renne
> eth.getCompilers()
[""]
Als ich versuchte, setSolc zu setzen, passierte Folgendes
> admin.setSolc('/Users/punddalinni/node_modules/solc')
exec: "/Users/punddalinni/node_modules/solc": permission denied
at InvalidResponse (<anonymous>:-81662:-57)
at send (<anonymous>:-156322:-57)
at setSolc (<anonymous>:-133322:-57)
at <anonymous>:1:1
Ich habe versucht, den Anweisungen hier zu folgen, aber es bleibt hängen
brew install llvm --HEAD --with-clang
BEARBEITEN: Einschließen des Inhalts von package.json von solc in Mac.
{
"_args": [
[
"solc",
"/Users/punddalinni"
]
],
"_from": "solc@latest",
"_id": "solc@0.3.0-1",
"_inCache": true,
"_installable": true,
"_location": "/solc",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "packages-13-west.internal.npmjs.com",
"tmp": "tmp/solc-0.3.0-1.tgz_1457892692634_0.5487515390850604"
},
"_npmUser": {
"email": "d11e9@turkd.net",
"name": "d11e9"
},
"_npmVersion": "3.3.2",
"_phantomChildren": {},
"_requested": {
"name": "solc",
"raw": "solc",
"rawSpec": "",
"scope": null,
"spec": "latest",
"type": "tag"
},
"_requiredBy": [
"#USER"
],
"_resolved": "https://registry.npmjs.org/solc/-/solc-0.3.0-1.tgz",
"_shasum": "523e79db0c69070f91fcbf408e8c7d0c93be176c",
"_shrinkwrap": null,
"_spec": "solc",
"_where": "/Users/punddalinni",
"author": {
"name": "chriseth"
},
"bugs": {
"url": "https://github.com/chriseth/browser-solidity/issues"
},
"dependencies": {},
"description": "Solidity compiler",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "523e79db0c69070f91fcbf408e8c7d0c93be176c",
"tarball": "http://registry.npmjs.org/solc/-/solc-0.3.0-1.tgz"
},
"gitHead": "5ce686c8d33db78c8f1eb8e2318eefbc5151f0eb",
"homepage": "https://github.com/chriseth/browser-solidity#readme",
"keywords": [
"compiler",
"ethereum",
"solidity"
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "chriseth",
"email": "c@ethdev.com"
},
{
"name": "d11e9",
"email": "d11e9@turkd.net"
}
],
"name": "solc",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chriseth/browser-solidity.git"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "0.3.0-1"
}
Irgendwelche Ideen?
Ich war mit NPM nicht vertraut, hatte also einige ähnliche Probleme. Durch einfaches Ausführen npm install solc
wird versucht, lokal zu installieren, was zu Berechtigungs- und Verknüpfungsproblemen führen kann – dies ist wahrscheinlich die Ursache des Problems.
Installieren Sie stattdessen solC global mit $ npm install -g solc
(Sie können es auch versuchen, $ npm install solc --global
da ich nicht sicher bin, welcher dieser beiden Befehle mein Problem behoben hat).
Wenn dies installiert ist, überprüfen Sie, wo es installiert wurde, indem Sie es ausführen, $ which solcjs
was so etwas wie ergeben sollte/usr/local/bin/solcjs
Ich stellte fest, dass ich auch Homebrew verwenden musste, um solC zu installieren/erstellen, indem ich den Installationsanweisungen folgte. Sobald Brew fertig war, überprüfte ich, ob solC mit installiert wurde $ which sol
.
Kopieren Sie dieses Verzeichnis und geth console
verwenden Sie es nach dem Start im Befehl setSolc, z> admin.setSolc("/usr/local/bin/solc")
Mit etwas Glück erhalten Sie eine Bestätigungsnachricht, und beim nächsten Lauf > eth.getCompilers()
sollte das Ergebnis in etwa so aussehen["Solidity"]
Ah ... Sie verwenden das falsch. Web3-Tutorials spiegeln dies nicht wider, aber es gibt einen Unterschied zwischen der Art und Weise, wie Sie Solidity zum Kompilieren auf web3 mit dem aus der Quelle erstellten Compiler (was web3 annimmt) und dem npm-Paket (um das sich die Tutorials nicht drehen) einrichten. . Um Dinge zu kompilieren, müssen Sie die Anweisungen auf der Seite Browser-solidity befolgen:
https://github.com/chriseth/browser-solidity
Auszug:
var solc = require('solc');
var input = "contract x { function g() {} }";
var output = solc.compile(input, 1); // 1 activates the optimiser
for (var contractName in output.contracts) {
// code and ABI that are needed by web3
console.log(contractName + ': ' + output.contracts[contractName].bytecode);
console.log(contractName + '; ' + JSON.parse( output.contracts[contractName].interface));
}
punddalinni
> var solc = require('solc'); Cannot find module 'solc' at a (<anonymous>:-160:-28) at require (<anonymous>:-122:-28) at <anonymous>:1:12
auch ein OS X-Problem? Da ich auch eine Ubuntu-Testchain verwende und dort Verträge zusammenstelle, folge ich einfach den üblichen Schritten, wie hier beschrieben (Einstellungsource = minifiedContract
, etc.)VoR0220
punddalinni
VoR0220
punddalinni
VoR0220