swagger-editorのnpm installでコケる場合に確認すべき点


  • swagger-editor 3.6.27
  • git cloneしてnpm installしようとしてコケてしまった人向け

確認すべき点

私が遭遇した範囲では以下の3つ。

  1. Python 2.7系の有無
  2. C/C++のコンパイラ等の開発環境の有無
  3. Node.js/npmのバージョン

1. Python 2.7系の有無

swagger-editorが依存する一部のパッケージは、Node.jsのネイティブアドオンを利用しており、それらはnode-gypという、ネイティブコードをコンパイルするためのツールに依存している。

このnode-gypが動作するためにPython 2.7系が必要となる。次のコマンドで確認できる。(Vは大文字)

python -V

次のように出力されればOK。2.7.xであれば良く、細かいリビジョン番号まで一致する必要はない。

Python 2.7.10

python : command not foundとエラー出力される、あるいは2.7系以外のバージョンが表示される場合は、各プラットフォームごとの適当な方法でPython 2.7系をインストールする。

  • $注意点$
    • Mac OSXなど一部のプラットフォームではシステムが利用するためのPythonがデフォルトでインストールされている。システムのPythonとの競合を防ぐためにvirtualenvAnaconda等のPython環境を切り替えるツールを活用すると良い。そもそもシステムが利用するPythonは2.7系な気がするので、余計な心配かもしれない・・

2. C/C++のコンパイラ等の開発環境の有無

前述したnode-gypはPython 2.7系に加えて(当然だが)C/C++のコンパイラやMake等の開発環境を必要とする。

2.1. Mac / Linuxの場合

次のコマンドで確認できる。

make -v

次のようにmakeのバージョンやビルドターゲット環境が表示されればOK。もちろん細かい部分が違ってても良い。

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0

make: command not foundとエラー出力される場合は、各プラットフォームごとの最適な方法でC/C++開発環境をインストールする。

一例としてUbuntuであればsudo apt install build-essential

2.2. Windows の場合

確認方法は色々ややこしいので省略。

手っ取り早く解決したいなら次のコマンドを実行する。管理者権限で実行した方が良さそう。

npm install --global --production windows-build-tools
  • 補足
    • node-gypwindowsあたりのキーワードでググると色々記事が出てくる。Visual Studioをインストールするとか色々出ててくるが、それらは古い情報なのでご安心を。2019年現在、一番簡単なのがこの方法。node-gypの公式のインストール手順にもある。
    • --productionオプションによりwindows-build-toolsのdevDependencies(=実行するだけなら不要)はインストールせずに済む。

3. Node.js/npmのバージョン

Readmeにあるように、swagger-editorに必要なNode.js/npmのバージョンは以下の通り。

  • Node.js 6.x
  • npm 3.x

確認方法は次の通り

node -v
npm -v

次のようにNode.js/npmがそれぞれ6.x/3.xのバージョンが表示されればOK。

> node -v
v6.17.1

> npm -v
3.10.10

異なるバージョンが表示された場合、Node.jsのバージョンを変更する。各プラットフォームごとにNode.jsバージョン管理ツールがあるので、そちらを利用するのがベター。

代表的なツールを次にあげる。もちろん他にもツールは色々ある。

プラットフォーム ツール名
Linux nvmなど
Mac nodebrewなど
Windows nodistなど