所以我一直在处理一个似乎很突然发生的非常奇怪的问题。我的松露编译,测试和迁移命令实际上没有任何作用。但是我的其他命令,例如开发,网络,控制台等都可以正常工作。当我在控制台中输入松露迁移时,会发生以下情况: 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命令问题有关。
答案 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