schedule2021-11-14

yarn installしたらnode-gnp ERRとError Could not find any Visual Studio installation to use at VisualStudioFinder.failが出た【Windows11】

新しく用意したWidows11の環境で、Nodeのアプリを実行しようとyarn installを実行したら以下のようなエラーが出た。

Error: Could not find any Visual Studio installation to use at VisualStudioFinder.fail

これの前にPythonがないよってエラーが出たので、そちらはPythonをインストーラーからインストールしたことで解決している。 このエラーはメモし忘れた。

Pythonをインストールしたら、以下のエラーが出た。

warning " > vue-jest@3.0.7" has unmet peer dependency "vue@^2.x".
warning " > vue-jest@3.0.7" has unmet peer dependency "vue-template-compiler@^2.x".       
[4/4] Building fresh packages...
[1/6] ⠠ node-sass
[-/6] ⠠ waiting...
[-/6] ⠠ waiting...
[4/6] ⠠ deasync
error C:\git\suzu6\myblog\node_modules\deasync: Command failed.
Exit code: 1
Command: node ./build.js
Arguments:
Directory: C:\git\suzu6\myblog\node_modules\deasync
Output:
C:\git\suzu6\myblog\node_modules\deasync>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "" rebuild )
gyp info it worked if it ends with ok
gyp info using node-gyp@8.2.0
gyp info using node@16.13.0 | win32 | x64
gyp info find Python using Python version 3.10.0 found at "C:\Users\81905\AppData\Local\Programs\Python\Python310\python.exe"
gyp ERR! find VS
gyp ERR! find VS msvs_version not set from command line or npm config
gyp ERR! find VS VCINSTALLDIR not set, not running in VS Command Prompt
gyp ERR! find VS could not use PowerShell to find Visual Studio 2017 or newer, try re-running with '--loglevel silly' for more details
gyp ERR! find VS looking for Visual Studio 2015
gyp ERR! find VS - not found
gyp ERR! find VS not looking for VS2013 as it is only supported up to Node.js 8
gyp ERR! find VS
gyp ERR! find VS **************************************************************
gyp ERR! find VS You need to install the latest version of Visual Studio
gyp ERR! find VS including the "Desktop development with C++" workload.
gyp ERR! find VS For more information consult the documentation at:
gyp ERR! find VS https://github.com/nodejs/node-gyp#on-windows
gyp ERR! find VS **************************************************************
gyp ERR! find VS
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Visual Studio installation to use
gyp ERR! stack     at VisualStudioFinder.fail (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:121:47)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:74:16
gyp ERR! stack     at VisualStudioFinder.findVisualStudio2013 (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:351:14)
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:70:14
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\find-visualstudio.js:372:16
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:54:7
gyp ERR! stack     at C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\util.js:33:16
gyp ERR! stack     at ChildProcess.exithandler (node:child_process:404:5)
gyp ERR! stack     at ChildProcess.emit (node:events:390:28)
gyp ERR! stack     at maybeClose (node:internal/child_process:1064:16)
gyp ERR! System Windows_NT 10.0.22000
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\git\suzu6\myblog\node_modules\deasync
gyp ERR! node -v v16.13.0

node-gypのエラーとWindowsでのセットアップ方法

https://github.com/nodejs/node-gyp#on-windows

エラー内の上のリンクに詳細とMac, Unix, Windowsでの解決方法がある。

…ただ、残念ながら上記のリンクでは解決しなかった。

https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#compiling-native-addon-modules

こっちのVisual Studio 2017のビルドツールとPython2.7を利用する方法で進めてやっとできた。3時間くらいかかって中々つらい。

以下はうまくいった方の手順を説明する。

node-gypとは

node-gypについてgoogle翻訳すると、

node-gypはNode.jsのネイティブアドオンモジュールをコンパイルするためにNode.jsで記述されたクロスプラットフォームのコマンドラインツールです。

特徴

  • 同じビルドコマンドは、サポートされているプラ​​ットフォームのいずれでも機能します
  • Node.jsのさまざまなバージョンのターゲティングをサポートします

とのことです。

npm install -g node-gyp

node-gypのインストールはこれで、私が利用したパッケージのどこかで利用していたのだと思う。

エラーの解決とWindowsでのセットアップ方法

Mac, Unixも解決方法があるが、Windowsについてだけ書く。

  1. Python2.7をインストールしてnpm configに設定する
  2. Visual Studio 2017の"Desktop development with C++"をインストールする
  3. コマンドプロンプトで npm config set msvs_version 2017を実行する。

1. Python2.7をインストールしてnpm configに設定する

https://www.python.org/downloads/release/python-2715/

からPython2.7をインストールする。 インストーラーは「Windows x86-64 MSI installer」を利用した。

npm config set python python2.7でnpmでPyhton2.7を利用することを設定します。

>npm config set python python2.7

>npm config get python python2.7 
python=python2.7
python2.7=undefined

最新の3.10をインストールした場合はエラーが解決しなかった。謎。

Visual Studioビルドツールをインストールする

Visual Studioの**Desktop development with C++**をインストールします。

最新の2022をインストールしたがエラーを解決できなかった。 Build Tools for Visual Studio 2017をインストールしました。

https://visualstudio.microsoft.com/ja/vs/older-downloads/#visual-studio-2017-and-other-products

picture 1

何故かサインインすると別のページに連れていかれる。 戻ってもう一度ダウンロードボタンから次のページへ行ける。

picture 2

vs_BuildTools.exe をダウンロードして実行する。

picture 3

Visual C++ Bild Toolsをチェックしてインストールする。

3. コマンドプロンプトで npm config set msvs_version 2017を実行する。

Build Tools for Visual Studio 2017をインストールしたのでバージョンは2017とする。

>npm config set msvs_version 2017

>npm config get msvs_version
2017

OK

PCを再起動する。

yarn installを実行する

ビルド通ったぜ!