web-dev-qa-db-ja.com

vagrant / Homestead / windowsでのnpmインストールエラー:EPROTO:プロトコルエラー、symlink

私は最初のプロジェクトをLaravel=でビルドし、Windows 8.1でHomesteadを使用してElixirを使用しようとしています。長すぎるパス名の既知のnpm/vagrant問題に遭遇しました:- https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant-on-windows-because-the-paths-are-too-long/

したがって、私はその記事で推奨されている1行の編集を行い(その人に神に感謝)、次に実行しました(Sudoの有無にかかわらず):npm install --no-bin-links

それは私を先に動かしたので、今私は2つの異なる種類のエラーを受け取ります:いくつかの「Missing write access」エラーと一連の「EACCES」エラー:

エラー出力は、スカベンジャーハントの次の手掛かりを私に与えます(私は思う):root/Administratorとしてこのコマンドをもう一度実行してみてください

この投稿 に移動しますが、Sudoを使用した後(またはユーザーのアクセス許可を更新した後など)でも変更はありません。

Sudo chown -R $ USER/usr/local

Sudo chown -R $(whoami)〜/ .npm

更新:次に、以下の提案の後にEPROTOおよびEXTXTBSYエラーが表示されます(npm-debug.logの名前を変更するプロンプトの提案に従っても: enter image description here

だから私はそれが私に手掛かりを与えるかどうかを確かめるためにgulpを実行してみました、そしてエラー出力は私にそうさせました:

Sudo npm rebuild node-sass

これを実行すると、同じEPROTOエラーとETXTBSYエラーが発生し、npm-debug.logファイルに次のように表示されます。コード/Family-laravel/node_modules/laravel-elixir/node_modules/gulp-sass/node_modules/.bin/node-sass '

その後、他の作業を1時間行った後、私は元に戻ってこれらの手順をやり直しました。今回はエラーが少なくなりました。

  • Sudo npm -g install npm @ latest(細かい)

  • Sudo npm install --no-bin-links(ETTXBSYエラーとタスク 'sass'のプラグイン 'run sequence'のエラーのみ)

  • Sudo npm rebuild node-sass --no-bin-links(no error!)

  • gulp(1つのエラーのみ:見つかりません:notify-send)

近くなってる!

21
Diane Kaplan

私はこの問題を数週間理解しようと努めてきました。これが、ホスト環境を使用せずに機能させるために私がしたことです。

Nodesource.comに従って、Homesteadでノードを最新バージョンに更新しました。

Sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | Sudo bash -

ホームステッドでnpmを最新バージョンに更新しました。これはノードを更新した後に行う必要があります:

Sudo npm -g install npm@latest

laravelプロジェクトディレクトリでnpm installを実行しました。インストールするすべての依存関係を取得するには、強制を使用する必要もありました。

Sudo npm install --no-bin-links
Sudo npm cache clear
Sudo npm install --force --no-bin-links

私はgulpエラーに従ってnode-sassを再構築しました:

Sudo npm rebuild node-sass --no-bin-links

このプロセス全体の間、何かが失敗した場合、または各インストール後に、私は次を使用しました:

Sudo npm cache clear

私のホストはWindows 10で、最新のバーチャルボックス、最新の浮浪者、最新のホームステッドを備えています。管理者としてgit bashを使用し、git bashを使用してvagrantにsshしました。

これまでのところ、私はテストして、私の根性が機能することを確認しました。他の依存関係を再構築する必要がある可能性があります。

お役に立てれば!

47
Adam

Virtual Box...

解決策を探し出した後、Laravel Homesteadのドキュメントを参照することにしました。幸いなことに、解決策はそこに投稿されました:

https://laravel.com/docs/5.8/Homestead#provider-specific-settings

以下をHomesteadVagrantfileに追加するだけです。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(...)
    config.vm.provider "virtualbox" do |v|
        v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
    end
(...)
end

[〜#〜]重要[〜#〜]

管理者としてプロビジョニングすることを忘れないでください。

Homestead up --provision

enter image description here

2
Daniel Camargo

最初のEACCESエラーの原因は、-Hオプションを使用せずにSudoを使用したことです。 Sudo npmは絶対に使用しないでください。常にSudo -H npmを使用してください。

インターネット上のあらゆる場所(NPMのドキュメントを含む)での指示は単に間違っています。

1
Rich Remer

同じ問題がありました。以下にしました。正常に動作します。

npm install --no-bin-links

ここで説明されている解決策で問題を解決しました: https://www.prolificinteractive.com/2015/01/21/getting-vagrant-nodejs-windows-play-well-together/

主なトリックは次のとおりです。

vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/path/to/guest/shared/directory", "1"]

それが誰かを助けることを願って

0
Baljeet Bhinder