node-gypをWindowsにインストールできない

問題

iconvをインストールしようとしたところ、

npm install iconv

以下のエラーが発生して node-gyp をインストールできない

npm error code 1
npm error path D:\Code\xxxxxxxxxx\src\node_modules\iconv
npm error command failed
npm error command C:\Windows\system32\cmd.exe /d /s /c node-gyp rebuild
npm error node:internal/modules/cjs/loader:1228
npm error   throw err;
npm error   ^
npm error
npm error     at Module._resolveFilename (node:internal/modules/cjs/loader:1225:15)
npm error     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:173:12)
npm error     at node:internal/main/run_main_module:28:49 {
npm error   code: 'MODULE_NOT_FOUND',
npm error   requireStack: []
npm error }
npm error
npm error Node.js v20.18.1
npm error A complete log of this run can be found in: C:\Users\xxxxx\AppData\Local\npm-cache\_logs\2025-01-10T15_25_05_531Z-debug-0.log

OS: Windows 10 Pro
開発: Visual Studio Code
Node.js: v20.18.1

対策

node-gyp はC++のソースコードをコンパイルするためコンパイラーが必要です。
Linuxの場合はGCC、Windowsの場合はVisual Studioのビルドツールを使用しますが、今回は Visual Studio 自体をインストールしてしまいます。

以下のことを行い対応しました。

・Python3 のインストール
・Visual Studio C++のインストール
・node_modules の削除

Python のインストール

Microsoft Store からPythonをインストールします。

Visual Studioのインストール

「C++によるデスクトップ開発」にチェックを入れる

node_modulesの削除

一旦削除しないと問題解消しなかったため、node_modulesフォルダを削除します。

結果

> npm install iconv
npm warn deprecated @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm warn deprecated @npmcli/move-file@1.1.2: This functionality has been moved to @npmcli/fs
npm warn deprecated npmlog@6.0.2: This package is no longer supported.
npm warn deprecated npmlog@6.0.2: This package is no longer supported.
npm warn deprecated har-validator@5.1.5: this library is no longer supported
npm warn deprecated are-we-there-yet@3.0.1: This package is no longer supported.
npm warn deprecated are-we-there-yet@3.0.1: This package is no longer supported.
npm warn deprecated text-encoding@0.6.4: no longer maintained
npm warn deprecated slack@11.0.2: this library is no longer maintained; if you are interested in taking this package on let us know
npm warn deprecated gauge@4.0.4: This package is no longer supported.
npm warn deprecated gauge@4.0.4: This package is no longer supported.
npm warn deprecated node-uuid@1.4.8: Use uuid module instead
npm warn deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm warn deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm warn deprecated @google/maps@0.4.6: Please use @googlemaps/google-maps-services-js instead.

added 968 packages, and audited 969 packages in 1m

72 packages are looking for funding
  run `npm fund` for details

58 vulnerabilities (5 low, 24 moderate, 23 high, 6 critical)
  npm audit fix

To address all issues possible (including breaking changes), run:
  npm audit fix --force

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.

うおおお!成功!!!

参考

実は公式にちゃんと書いてあります。

node-gyp
Node.js native addon build tool. Latest version: 11.0.0, last published: a month ago. Start using node-gyp in your proje...

コメント

タイトルとURLをコピーしました