LoginSignup
22
24

More than 5 years have passed since last update.

Windows に node.js を chocolatey でインストールして gulp を導入する with PowerShell

Last updated at Posted at 2015-07-20

環境

  • Windows 7 SP1 Pro x64
  • Chocolatey 0.9.9.8
  • nodejs 0.12.7
  • gulp 3.9.0
  • Python 2.7.10
  • ユーザ名:Dev

インストール

chocolatey のインストールから書きます。必要な部分のみ読んでいただければと思います。

chocolatey のインストール

PowerShell を管理者権限で起動し、スクリプト実行ポリシーのチェックを行います。

Get-ExecutionPolicy

もし実行結果が Restricted である場合は以下を実行してください。

Set-ExecutionPolicy Unrestricted

問題がなければ以下を実行すると chocolatey がインストールされます。

iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))

補足ですが、chocolatey でインストールしたファイルは choco uninstall しても残ります。ファイルも消したい場合は以下のコマンドで自動アンインストール機能を有効にしておきます。

choco feature enable -n autoUninstaller

node.js のインストール

chocolatey で node.js をインストールします。

choco install nodejs -y

これで nodejs 0.12.7nodejs.install 0.12.7 がインストールされます。
ここで一度** PowerShell を再起動**して node コマンドを使えるようにします。

※注:筆者は PC を再起動しましたが PowerShell の再起動だけで問題ないはずです。

npm による gulp のインストール

node.js をインストールすると npm も使えるようになります。
npm は -g スイッチが有るとグローバルディレクトリに、無いとカレントディレクトリにモジュールをインストールします。
モジュールのインストール場所は npm bin コマンドで表示されます。

PS C:\work> npm bin -g
C:\Users\Dev\AppData\Roaming\npm    # グローバルディレクトリ
PS C:\work> npm bin
C:\work\node_modules\.bin           # カレントディレクトリ

グローバルディレクトリに gulp をインストールします。

npm install -g gulp

Python のインストール

このまま使おうとすると package.json を使った自動インストールなどで Python が無くて怒られる場合があります。

gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.

gyp は Python 2.7 系で動作しますので Python 2.7.x をインストールします。管理者権限の PowerShell で以下のコマンドを打ちます。

choco install python2 -y

インストールされました。

PS C:\Users\Dev> python --version
Python 2.7.10

トラブル解析

トラブルシューティング:PowerShell で gulp を実行出来ない

node.exe の無いディレクトリで gulp コマンドを実行すると以下のエラーとなり実行できませんでした。
結論を書くと環境変数の誤りでした。おそらく筆者の環境バグで他の人は起こらないかと思います。

PS C:\Users\Dev> gulp -v
'node' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

スタートメニューから Node.js command prompt を起動してそこでコマンドを打つと正常に実行されます。

C:\Users\Dev>gulp -v
[12:08:47] CLI version 3.9.0

PowerShell に戻りカレントディレクトリを node.exe のある C:\Program Files\nodejs に移動してコマンドを実行すると正常に実行されます。(実行後のテキスト色が白から灰色に変わっていますが…。)

gulp_with_powershell.png

どうやら環境変数 PATH から node コマンドをうまく探せていない気がします。確認すると、確かにおかしな行がいくつか見られたのでこれを直します。

直す前( ; で改行を、 # でコメントを入れています)

C:\ProgramData\Oracle\Java\javapath;
C:\Program Files (x86)\Java\jdk1.7.0_55\bin; # 存在しないディレクトリ
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0"; # 下の行と重複かつ末尾に " が付いている
C:\Windows\System32\WindowsPowerShell\v1.0\; # 間違いではないが末尾に \ が付いていて統一されていない 
C:\ProgramData\chocolatey\bin;
C:\Program Files\nodejs\                     # 間違いではないが末尾に \ が付いていて統一されていない

直した後(存在しないディレクトリと重複行を削除、末尾の \ を削除)

C:\ProgramData\Oracle\Java\javapath;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0;
C:\ProgramData\chocolatey\bin;
C:\Program Files\nodejs

これで動くようになりました。(色はそのままですが気にしないでおきます。)

gulp_with_powershell_fix.png

トラブルシューティング:fsevents でエラーが表示される

npm install でパッケージをまとめてインストールしようとしたとき、以下のようなエラーが表示されました。調べると Mac OS X 向けの API を叩いているところで発生する警告だそうで、特に問題はなさそうです。

npm WARN optional dep failed, continuing fsevents@0.3.6
npm WARN optional dep failed, continuing fsevents@0.3.6

トラブルシューティング:utf-8-validate がビルドできない(未解決)

この問題は解決していません

パッケージによっては VCBuild.exe (Visual C++ のビルダー)が必要になることがあります。ログを見る限り browser-sync の依存関係パッケージ utf-8-validatenode-gyp rebuild が走行した後に発生しているようです。
なお、 utf-8-validate のビルドが失敗しても browser-sync は動作するようです。

エラー表示例

MSBUILD : error MSB3428: Visual C++ コンポーネント "VCBuild.exe" を読み込めませんでした。この問題を解決するには、次のいずれかを行ってください。
1) .NET Framework 2.0 SDK インストールする。
2) Microsoft Visual Studio 2005 をインストールする。
3) その他の場所にインストールされている場合、コンポーネントの場所をシステム パスに追加する。
...
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe` failed with exit code: 1
...

.NET Framework 2.0 SDK インストールする(失敗)

表示に従って .NET Framework 2.0 SDK インストールしました。

setup.exe を実行してデフォルト設定のままインストールしました。

再び PowerShell に戻り以下を実行します。

cd "C:\Program Files (x86)\Microsoft.NET\SDK\v2.0\Bin"
.\sdkvars.bat
# 実行結果出力:
# Setting environment to use Microsoft .NET Framework v2.0 SDK tools.
# For a list of SDK tools, see the 'StartTools.htm' file in the bin folder.

ビルドします。

npm install
(略)
MSBUILD : error MSB3428: Visual C++ コンポーネント "VCBuild.exe" を読み込めませんでした。この問題を解決するには、次のいずれかを行ってください。

ダメでした。

コマンドプロンプトでは?と思ってスタートメニューのSDK コマンド プロンプトから実行同様に実行しました。結果、ビルドに進むようになりましたがライブラリのファイルが足りずに失敗しています。

ターゲット ValidateSolutionConfiguration:
    ソリューション構成 "Release|x64" をビルドしています。
ターゲット Build:
    ターゲット validation:
        VCBuild.exe C:\work\node_modules\browser-sync\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws\node_modules\utf-8-validate\build\validation.vcproj "Release|x64"
        c:\users\dev\.node-gyp\0.12.7\deps\uv\include\uv-win.h(32): fatal error C1083: include ファイルを開けません。'winsock2.h': No such file or directory
    プロジェクト "binding.sln" 内のターゲット "validation" のビルドが終了しました。 -- 失敗
プロジェクト "binding.sln" 内のターゲット "Build" のビルドが終了しました。 -- 失敗

プロジェクト "binding.sln" のビルドが終了しました。 -- 失敗

Microsoft Windows SDK for Windows 7 and .NET Framework 4(失敗)

Microsoft Windows SDK for Windows 7 and .NET Framework 4 を入れてみました。これも chocolatey でインストールできます。

choco install windows-sdk-7.1 -y

なお Windows 8.1 をお使いの方は windows-sdk-8.1 の方を導入することになると思います。

しかし、こちらは環境変数がらみでビルドに失敗しているようです。

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(297,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry.  TargetFrameworkVersion or PlatformToolset may be set to an invalid version number. [C:\work\node_modules\browser-sync\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj]
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.Targets(146,5): error MSB6006: "CL.exe" はコード -1073741515 を伴って終了しました。 [C:\work\node_modules\browser-sync\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws\node_modules\bufferutil\build\bufferutil.vcxproj]

後始末は冒頭の自動アンインストール機能を有効にしていると楽です。

choco uninstall windows-sdk-7.1
choco uninstall 7zip               # windows-sdk-7.1 の依存関係でインストールされます
22
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
24