cifs マウント環境上で npm 使うのは辛い
◆ Windows フォルダをマウントしてる
◆ → シンボリックリンクを作れないエラー
◆ --no-bin-links するとシンボリックリンクを作らない
◆ → シンボリックリンクがないのでコマンドが見つからないエラー
◆ Windows 側でインストール完了させる
◆ → ビルドしたものが Linux 用じゃなくてエラー
◆ → シンボリックリンクを作れないエラー
◆ --no-bin-links するとシンボリックリンクを作らない
◆ → シンボリックリンクがないのでコマンドが見つからないエラー
◆ Windows 側でインストール完了させる
◆ → ビルドしたものが Linux 用じゃなくてエラー
普段 Node.js は自分で書いた 1 ファイルの js ファイル実行するとか その程度の使い方が多いのであまり困らなかったのですが npm でパッケージをいろいろ入れながら使うという使い方は思いの外辛かったです
Windows のフォルダを共有することで公開して Linux でそのフォルダをマウントしています
こうすることで Windows 上のエディタでコードを書いて 実行は Linux の Node.js で とできます
ですが Windows のフォルダ上だとシンボリックを作れずにそこでエラーになります
シンボリックリンクを作らない方法もあって
を使うとシンボリックを作りません
例えば sqlite3 のパッケージだと ネイティブアドオンを使っているのかインストール時にビルドが必要で ビルドに使う gyp だったかのシンボリックのコマンドが見つからずエラーになりました
sqlite3 だとビルドするため 環境ごとに別ファイルになり Windows でビルドしても Linux 用のファイルがないと実行時にエラーが起きました
ただの JavaScript ファイルのみのパッケージなら問題ないと思いますが こういう特殊なパッケージがあると辛いです
sqlite3 みたいな特殊なパッケージはそう多くないので 今のところこの手順でやってるのですが けっこう面倒なんですよね
なにかいい方法ないのでしょうか
「Windows のフォルダを Linux がマウントするのをやめて Linux のフォルダを Windows がマウントする」 というのも考えましたが VM 起動してないとソースコード見れないのはちょっと困るかもしれません
マウント環境上でシンボリックリンク作れるようになってくれれば一番いいのですけどね
Windows のフォルダを共有することで公開して Linux でそのフォルダをマウントしています
こうすることで Windows 上のエディタでコードを書いて 実行は Linux の Node.js で とできます
シンボリックリンクが作れない
npm はパッケージ入れるとシンボリックを作ってくれるものがありますですが Windows のフォルダ上だとシンボリックを作れずにそこでエラーになります
シンボリックリンクを作らない方法もあって
npm install **** --no-bin-links
を使うとシンボリックを作りません
シンボリックリンクが必要なときもある
シンボリックリンクを作らないだけでうまくいくケースもあるのですが 中にはシンボリックによるコマンドを実行する必要があって --no-bin-links でシンボリックリンクを作らないとインストールに失敗するものもあります例えば sqlite3 のパッケージだと ネイティブアドオンを使っているのかインストール時にビルドが必要で ビルドに使う gyp だったかのシンボリックのコマンドが見つからずエラーになりました
Windows 環境でインストールしても
Windows 環境をマウントしているんだからシンボリックリンクが使える Windows 側で npm install をすればいいじゃない っと思ったのですが できない場合もありますsqlite3 だとビルドするため 環境ごとに別ファイルになり Windows でビルドしても Linux 用のファイルがないと実行時にエラーが起きました
ただの JavaScript ファイルのみのパッケージなら問題ないと思いますが こういう特殊なパッケージがあると辛いです
どうするのがいいのかな
結局ローカルに一時フォルダを作って package.json をコピーして そこでインストールした node_modules と更新された package.json と package-lock.json をマウントしたフォルダにコピーしてますsqlite3 みたいな特殊なパッケージはそう多くないので 今のところこの手順でやってるのですが けっこう面倒なんですよね
なにかいい方法ないのでしょうか
「Windows のフォルダを Linux がマウントするのをやめて Linux のフォルダを Windows がマウントする」 というのも考えましたが VM 起動してないとソースコード見れないのはちょっと困るかもしれません
マウント環境上でシンボリックリンク作れるようになってくれれば一番いいのですけどね