Windowsを長い間使った後、Macの本を買ったばかりです。
私が取り組んでいたMeanJSプロジェクトに取り組んでいた。プロジェクトでnpm install
を実行するとエラーがスローされます
Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/Users/Aayush/Work/lishn/repo/lishn-alpha/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug/build/debug/v0.4.6/node-v46-darwin-x64/debug.node --module_name=debug --module_path=/Users/Aayush/Work/lishn/repo/lishn-alpha/node_modules/grunt-node-inspector/node_modules/node-inspector/node_modules/v8-debug/build/debug/v0.4.6/node-v46-darwin-x64' (1)
npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v4.1.1
npm ERR! npm v2.14.4
npm ERR! code ELIFECYCLE
>
> npm ERR! [email protected] install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! This is most likely a problem with the v8-debug package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-pre-gyp install --fallback-to-build
npm ERR! You can get their info via:
npm ERR! npm owner ls v8-debug
npm ERR! There is likely additional logging output above.
キャッシュをクリアしてみました。
Node_pre-gypをSudo
および--unsafe-perm
でインストールしてみました
同じエラーで、MEANプロジェクトの新規インストールも試みました。
ここに問題が何であるかを見つけることができないようです。
Node Version - 5.0.0
NPM Version - 3.3.10
node-gypをアップグレードしようとしました:
Sudo npm install -g node-gyp
それは私のために働いた。
私は解決策を見つけました ここ 、私はそれが役立つことを願っています。
russfrischは4日前にコメントしました:
これと同じ問題が発生していました。 grunt-node-inspectorのバージョンを「〜」の代わりに「> =」を追加するように変更すると、これが機能しました。
githubページ へのリンクは、このソリューションを見つけた場所です。
これはすべての人に有効ではないかもしれませんが、ノードを更新し、上記のいずれも機能しなかったときの問題を修正しました
さて、いくつかのデバッグの後、次の依存関係はtouch
の古いバージョンを使用しています。
./node_modules/bower/node_modules/decompress-Zip/package.json: "touch": "0.0.3"
./node_modules/bower/node_modules/lockfile/package.json: "touch": "0"
./node_modules/gulp-nodemon/node_modules/nodemon/package.json: "touch": "1.0.0",
./node_modules/gulp-nodemon/node_modules/touch/package.json: "touch": "./bin/touch.js"
./node_modules/nodemon/package.json: "touch": "~0.0.3",
これで、ノード5でmeanJSを動作させることができました。
私が実行したコマンドの履歴は次のとおりです。
git clone https://github.com/meanjs/mean.git
cd mean
nvm install 5
nvm use 5
npm install
which node-gyp
npm install -g node-pre-gyp
Sudo xcodebuild -license
npm install
いくつかの問題があり、その後:
次の行を追加しました。
#!/usr/bin/env node
ファイルの先頭へ./mean/node_modules/.bin/touch
その後:
npm install
もちろん、再試行する前にSudo rm -rf ./node_modules && npm cache clean
をスローすることもあります。
私は多くの努力の後、同じ問題を解決しました。 npmバージョンがgprcバージョンと互換性がないためです。したがって、npmを更新する必要があります。
npm update
npm install
これは、ノードのアップグレードに問題があるようです。次のアプローチでどのように解決しましたか。
最初にCLIをアンインストールし、キャッシュをクリアしてから、これらのコマンドで再インストールします
npm uninstall -g @angular/cli
npm cache clean
npm install -g @angular/cli
次に、node-pre-gypをインストールします
npm install -g node-pre-gyp
端末を再起動して、問題が解決するかどうかを確認してください。
@ ocean800が述べたように、ノードを更新しました。以下の解決策はUbuntu 16.04用で、私にとってはうまくいきましたが、OSXで似たようなものがこの問題を解決するかもしれません。
Ubuntu 16.04では、ノードのアップグレードがうまくいきました
上記のリンクからソリューションを複製しています
更新するには、nをインストールできます
Sudo npm install -g n
それからちょうど:
Sudo n latest
または特定のバージョン
Sudo n 8.9.0
次に、インストールしてみてください
Sudo npm install <package>
私のための次のコマンド作業:
Sudo npm i -g node-pre-gyp
これらを試してください
Sudo chown -R $(whoami) ~/.npm
Sudo chown -R $(whoami) /usr/local/lib
Sudo chown -R $(whoami) /usr/local/bin
その後、Sudoを使用せずにコマンドを再試行してください。例えば.
npm install -g npm@latest
これを確認してください link 詳細については
私のシナリオが他の誰かに役立つことを願っています。パッケージbcryptでも同じ問題が発生しました。最初に、Anneが示唆したようにnpm i -g node-gyp
を試しましたが、問題は続きました。その後、エラーメッセージをもう一度読んで問題をよりよく理解し、プリコンパイルされたバージョンが存在しないため、スクリプトが最初からパッケージをビルドできないことを発見しました。特に、g ++コマンドが見つからないため、build-essential
パッケージとSudo apt install build-essential -y
のインストールを解決しました。
私もこの問題を解決しました:nvmでLTSバージョンにノードを再インストールするだけです:
nvm install --lts
nvm use --lts
次にrm -rf node_modules
そしてnpm i
node_modulesフォルダーからサンプルを実行していますか?
そこから実行されることは想定されていません。
代わりに、プロジェクトに次のファイルを作成します。
post-data.js
var Curl = require( 'node-libcurl' ).Curl,
querystring = require( 'querystring' );
var curl = new Curl(),
url = 'http://posttestserver.com/post.php',
data = { //Data to send, inputName : value
'input-arr[0]' : 'input-arr-val0',
'input-arr[1]' : 'input-arr-val1',
'input-arr[2]' : 'input-arr-val2',
'input-name' : 'input-val'
};
//You need to build the query string,
// node has this helper function, but it's limited for real use cases (no support for
array values for example)
data = querystring.stringify( data );
curl.setOpt( Curl.option.URL, url );
curl.setOpt( Curl.option.POSTFIELDS, data );
curl.setOpt( Curl.option.HTTPHEADER, ['User-Agent: node-libcurl/1.0'] );
curl.setOpt( Curl.option.VERBOSE, true );
console.log( querystring.stringify( data ) );
curl.perform();
curl.on( 'end', function( statusCode, body ) {
console.log( body );
this.close();
});
curl.on( 'error', curl.close.bind( curl ) );
Post-data.jsノードで実行します