Npmモジュールをインストールするときに問題が発生します。 NodeJSは、Windowsホスト上のVirtualBoxで実行されているUbuntu11.10にインストールされます。私のプロジェクトファイルはNTFSパーティションにあります(Windowsと共有する必要があります)。 npmモジュールをインストールしようとするとエラーが発生し、モジュールがインストールされません。 npmがシンボリックリンクを作成しようとすると問題が発生することがわかりました。
おそらく、NTFSパーティションにシンボリックリンクを作成することはできません。Linuxファイルシステムの「内部」にモジュールをインストールすると、すべてが正常に機能します。
どうすればこれを修正できますか?依存関係を手動で解決したくない:/
バージョン1.2.21以降、npmにはinstall
コマンドの新しいオプションがあります。 --no-bin-links
特定のノードモジュールをインストールする場合に使用できます
npm install express --no-bin-links
また、package.jsonのインストール用
npm install --no-bin-links
このオプションを使用すると、VM(Ubuntuゲスト、Windowsホスト)内の共有フォルダーに問題なく多くのnpmモジュールをインストールできました。
オプションがnpmコードに追加されたコミットは b4c58617039c21c10889a9869f8e86a23e17d3a
これを試してください- http://ahtik.com/blog/2012/08/16/fixing-your-virtualbox-shared-folder-symlink-error/
私のために働く!
基本的にはパラメータを設定します
VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
次に、VMを管理者として実行します..。
シンボリックリンクのアクセス許可、または--no-bin-links
が機能しませんでした。代わりに、node_modules
を/vagrant
共有から移動することを選択しました。 /vagrant/node_modules
から/tmp/node_modules
へのシンボリックリンクを作成しました。 これは、node_modules
がバージョン管理されていない場合にのみ実行できます。チェック this 最初に!
http://kmile.nl/post/73956428426/npm-vagrant-and-symlinks-on-windows も参照してください。
共有ドライブ(「共有フォルダ」)にシンボリックリンクを作成できないことは間違いありません。 WindowsホストマシンとLinuxゲストではさらに不可能です。
Hostマシンは、guestsのファイルシステムを認識していません。ゲストマシンは、ホストのブラックボックスです。ホストがこの/etc/...
がどこにあるかわからない場合、ホスト「これは/etc
にリンクします」と言うことはできません:)。
つまり、残念ながらありません。
もう少し詳しく:
間違っていたら本当に嬉しいです!それは私の開発プロセスにおける大きな苦痛です。
私はたくさんのオプションを試しました。デフォルトでは、 "共有フォルダー"が使用するファイルシステムはvboxsf
であり、samba
( Windows用のデフォルトのネットワーク共有プロトコル)そう:
samba
とnfs
以外のネットワーク共有プロトコルがあり、「シンボリックリンク」の作成が試行されるたびにファイルをコピーする可能性がありますか?よくわかりません。
しかし、まだ見つけていません。また、 "locking"はファイルシステム自体のタスクのようであるため、ネットワークプロトコルを疑っています(ロック専用のレジストリがない限り)これを行うことができます。
_npm install --no-bin-links
_を試した後もまだこの問題を抱えている人のために。
VirtualBoxを使用してWindows7ホストのLaravel Homestead Vagrantボックスで_npm install
_を実行している同様の問題に遭遇したとき、上記のソリューションのいずれも機能させることができませんでした。ゲストボックスには、Windowsファイルシステムにマップされたディレクトリがあります。
この問題は、さまざまなエラーメッセージを引き起こし、パッケージのインストールに失敗していました。質問に最も関連するのは_npm ERR! UNKNOWN, symlink '<some filename>'
_でした。
これを修正するために、ゲストLinuxではbashではなく、WindowsのGit bashコマンドラインで_npm install
_を正常に実行できました。
これを行うには、Git for WindowsとNodeJS(両方ともWindowsボックスに)をインストールする必要があります。
例えば.
choco install nodejs.install
_choco install git.install
_C:\Program Files (x86)\Git\Git Bash.vbs
を実行しますcd /c/projects/projectname
_npm install
_を実行しますすべてが正常にインストールされているようです。
fsutil動作セットSymlinkEvaluationL2L:1 R2R:1 L2R:1 R2L:1
このコマンドは、Windowsでシンボリックリンクを有効にします。最後の訪問時の不可解なコマンドのより良い説明については: サーバー2008でシンボリックリンクのターゲットを取得するときに、「シンボリックリンクはタイプが無効になっているためフォローできません。」エラーを克服するにはどうすればよいですか?
要約すれば
Fsutil動作セットSymlinkEvaluationの動作コード(つまり、L2L、L2R、R2L、およびR2R)は、次のことを意味します。
Lは「ローカル」を表し、Rは「リモート」を表します(誰がサンクしたでしょうか?)最初のLまたはR(2の前)は、マシンに対する(ターゲットではなく)リンク自体の位置を示します。リンクへのアクセス。 2番目のLまたはR(2の後)は、リンク自体が配置されているマシンに対するリンクのターゲットの位置を示します。
ネイティブモジュール(C/C++からコンパイル)を使用しない場合は、Ubuntu VM)でnpmを使用し、node_modulesフォルダーをWindowsドライブにコピーできます。