npm config set python してるのに node-gyp で Python のバージョン違いによるエラーが発生する場合の対処法

表題の通り。

環境

  • Windows 10 x64
  • Node v11.11.0
  • npm v6.7.0
  • node-gyp v3.8.0 グローバルインストール
  • バージョン管理に nvm-windows を導入

コマンドプロンプトからnode-gypを叩いたらエラーが出た。

TL; DR

Windows環境変数npm_config_pythonを追加する。
msvs_versionも指定する場合はnpm_config_msvs_versionを追加する。
大文字小文字注意(全部小文字)。

環境変数を設定した後は再起動なり再ログオンなりするべき。

原因

npm-scripts が実行されたときは npm-config の設定が環境変数に npm_config_* として追加されるが、node-gypを直接叩いた場合は何らかの理由で追加されていない模様。
おそらく.binの実行時はnpm_config_*の環境変数が追加されないということなのだろうが、もしかしたらnvm-windowsとかのバグかもしれない。詳しく知りたい人は調査してください。