Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

ENOTSUP: operation not supported on socket, symlinkを解決した話

最近、以前勉強していたReactやnodejsを再勉強中。
そこである日、

npm install

npx create-react-app

を実行したところ、

ERR! code ENOTSUP
npm ERR! syscall symlink
npm ERR! path ../mime/cli.js
npm ERR! errno -95
npm ERR! ENOTSUP: operation not supported on socket, symlink '

といったエラーが発生してしまいました。

今回は本エラー発生の原因とその解決方法を調べたので備忘録として残しておきたいと思います。


■現象発生原因

このエラーは、nasサーバーを

mount -t cifs

でマウントしたマウント先のディレクトリでのみ発生しており、
ディレクトリでは問題なくnpm installやnpx create-react-appは実行出来ている。

このため、コマンドが実行出来ていないわけではなさそう。。

そこで調べてみると気になるやり取りを発見。
github.com

読んでみるとリンクが作成出来ないことが起因しているエラーっぽい?
ということで試しに、test.txtファイルを作成した上で

ln -s test.txt test2.txt

を実行。

すると、

ln: シンボリックリンク 'test2.txt' の作成に失敗しました: サポートされていない操作です

とエラーが発生しシンボリックリンクが作成出来ない。
確かにリンク作成が出来ないことが起因してエラーが発生しているもよう。

■解決方法

エラーの原因がリンク作成できなかったことが起因しているので、
リンクを作成しないようにコマンドを実行すれば良さそう。

ということで、先ほどのwebページ(github issue)を確認してみると、

    • no-bin-linksオプションを付けるとリンク作成せずにコマンドの実行が出来るそう。

ということで、それぞれ

npm install --no-bin-links

npx create-react-app --no-bin-links

とオプションを付与して実行してみたところ、
エラーが発生せずインストール出来ることを確認。

何とか使用できるようになって満足。

■最後に

今回はnpmやnpxを実行した時にsymlinkのエラーに対する対応方法をまとめました。
なぜリンクが作成できなかったのか?、リンクを作成するためにはどうすればよいか?に関しては継続して調査するとして、、、
まずは、

npm install

npx create-react-app

が使えるようになったので良かった。