某些松露命令无能为力

时间:2019-02-25 21:41:20

标签: npm solidity node-gyp smartcontracts truffle

所以我一直在处理一个似乎很突然发生的非常奇怪的问题。我的松露编译,测试和迁移命令实际上没有任何作用。但是我的其他命令,例如开发,网络,控制台等都可以正常工作。当我在控制台中输入松露迁移时,会发生以下情况: Nothing happens and the the terminal line just goes to a new line

这是我运行松露开发时发生的情况: Works as expected

我用一个开箱即用的毛毛雨应用程序做了同样的事情。其配置文件如下:

const path = require("path");

module.exports = {
// See <http://truffleframework.com/docs/advanced/configuration>
// to customize your Truffle configuration!
contracts_build_directory: path.join(__dirname, "app/src/contracts"),
solc: {
  optimizer: {
    enabled: true,
    runs: 200
  }
},
networks: {
  development: {
    host: "LOCALHOST",
    port: 8545,
    network_id: "5777", // Match any network id
  }
}};

迁移文件如下:

const SimpleStorage = artifacts.require("SimpleStorage");
const TutorialToken = artifacts.require("TutorialToken");
const ComplexStorage = artifacts.require("ComplexStorage");

module.exports = function(deployer) {
  deployer.deploy(SimpleStorage);
  deployer.deploy(TutorialToken);
  deployer.deploy(ComplexStorage);
};

一切看起来都很正常,我似乎无法弄清楚问题出在哪里。以前可以运行的应用程序现在似乎无法运行松露编译,迁移或测试命令。

所以我最初认为这可能是我的npm数据包有问题,或者可能需要进行新的更新。因此,我卸载并重新安装了truffle @ latest。我开始注意到有时下载某些软件包时会遇到特定错误:

/Users/aditya/.nvm/versions/node/v11.10.0/bin/truffle -> 
/Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/truffle/build/cli.bundled.js

> keccak@1.4.0 install /Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/truffle/node_modules/keccak
> npm run rebuild || echo "Keccak bindings compilation fail. Pure JS implementation will be used."


> keccak@1.4.0 rebuild /Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/truffle/node_modules/keccak
> node-gyp rebuild

gyp ERR! configure error 
gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/truffle/node_modules/keccak/build'
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/Users/aditya/.nvm/versions/node/v11.10.0/bin/node" "/Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/aditya/.nvm/versions/node/v11.10.0/lib/node_modules/truffle/node_modules/keccak
gyp ERR! node -v v11.10.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! keccak@1.4.0 rebuild: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the keccak@1.4.0 rebuild script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Keccak bindings compilation fail. Pure JS implementation will be used.
+ truffle@5.0.5
added 91 packages from 305 contributors in 7.797s

在安装特定软件包时,此node-gyp错误不断出现多次。因此,我通过卸载并重新安装npm对npm进行了全面的检查。这没有改变,并且此错误仍然持续显示。我不确定此错误是否与Truffle命令问题有关。

2 个答案:

答案 0 :(得分:0)

有同样的问题,原来是权限问题。

sudo truffle migrate

作品

答案 1 :(得分:0)

我知道这是迟来的答案,但是我是为新来者发布的,这里的问题可能是目录的所有权,所以 为了最大程度地减少权限错误的可能性,您可以将npm配置为使用其他目录

在命令行的主目录中,创建用于全局安装的目录:

 mkdir ~/.npm-global

配置npm以使用新的目录路径:

 npm config set prefix '~/.npm-global'

添加此行:

 export PATH=~/.npm-global/bin:$PATH

在命令行上,更新系统变量:

 source ~/.profile

要测试新配置,请在不使用sudo的情况下全局安装软件包:

 npm install -g node-gyp