◆ Windows フォルダをマウントしてる
  ◆ → シンボリックリンクを作れないエラー
◆ --no-bin-links するとシンボリックリンクを作らない
  ◆ → シンボリックリンクがないのでコマンドが見つからないエラー
◆ Windows 側でインストール完了させる
  ◆ → ビルドしたものが Linux 用じゃなくてエラー

普段 Node.js は自分で書いた 1 ファイルの js ファイル実行するとか その程度の使い方が多いのであまり困らなかったのですが npm でパッケージをいろいろ入れながら使うという使い方は思いの外辛かったです

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 起動してないとソースコード見れないのはちょっと困るかもしれません

マウント環境上でシンボリックリンク作れるようになってくれれば一番いいのですけどね