new wings

プログラミングを始めたので、感想を書いてくと思います

Synology NAS に Node v12 をインストールしたことで npm install が失敗する件の対策

Synology NAS に Node v12 をインストールしたことで npm install が失敗する件の対策について

現状の対策方法: Node v8 の npm を引き続き実行する。

注意 この記事では Node v12 の npm install を正しく実行させる方法については書いていません。それをするには zlib をアップデートする必要があるはずです。

Synology NAS のパッケージアップデートの関係で Nodejs の v12 がインストールされた。
今までは v8 の方のパスが通っていたわけだが v12 がインストールされたことでそちらのパスが通るようになった。

ここで問題発生

v12 になってからは npm install が失敗する。

エラーメッセージ

ZlibError: zlib: invalid distance too far back
error code Z_DATA_ERROR

Synology NAS にインストールされている zlib が古いからだ。
zlib を手動で更新するのも面倒なので npm install する時には v8 の方を明示的に指定するのがいいと思われる。

例 uuid をインストール ポイントはv8のnodeとnpm-cli.jsを指定すること

$ /volume1/@appstore/Node.js_v8/usr/local/bin/node /volume1/@appstore/Node.js_v8/usr/local/lib/node_modules/npm/bin/npm-cli.js i uuid

/volume1 の部分は環境依存。

毎回入力するのは面倒なので環境変数に突っ込むなり何なりすればいいと思う。

~/.profile ファイルに下記を追記する。.profile がなければ作る。

export NODEv8="/volume1/@appstore/Node.js_v8/usr/local/bin/node"
export NPMv8="/volume1/@appstore/Node.js_v8/usr/local/lib/node_modules/npm/bin/npm-cli.js"
export npmv8="$NODEv8 $NPMv8"

以降、例えば npm list$npmv8 list のように実行する。


関連する報告