CircleCI2系で、公式ドキュメントを参照してセットアップしたらnpm installがコケた。
circleci/node:6.17.1のイメージを使用してる環境。
https://circleci.com/docs/ja/2.0/language-javascript/
Error: Cannot find module 'strip-ansi'
こういうエラーでnpm installが停止する。
package-lockの中を見るとstrip-ansiは入ってるし……と思ってたがプロジェクトのパッケージが問題ではなくて、原因としては、公式ドキュメントにある sudo
がだめ。
.circleci/config.yml
-run:name:update-npmcommand:'sudonpminstall-gnpm@latest'
npmがsudoでインストールされるとそのあとのnpmコマンドが通らなくなる(別にinstallに限らずnpmコマンド全部落ちる)。
sudoを外すとパーミッションでコケるので、以下のように変更するとよい
.circleci/config.yml
-run:name:set-global-prefixcommand:npm config set prefix '$HOME/.npm-global/'-run:name:update-npmcommand:npm install -g npm@latest
グローバルパッケージのインストール場所をパーミッションのいらないところに変更すると通る。
もしかしたらnodeのバージョンにもよるのかもしれないけど、公式通りにやるとハマるのは困った。