WindowsにNode.js, Yarnを設定する方法:The file C:\Program Files\nodejs\yarn.ps1 is not digitally signed.も回避

投稿者: | 2024年10月24日

Windows 10/11 にnode.jsとyarnをインストールする

意外に複雑なWindowsでのWeb開発環境構築

私は元々UNIX系から開発をスタートしたこともあって、DOSの世界に等しいコマンドプロンプトより、PowerShellを使うことが多い。

訳あってWindowsでReactの開発を行うことになったので、PowerShell経由でNode.jsとyarnを入れることにした。

ところが、これはかなり厄介な道であった。以下にその手順を記す。

node.jsを本家サイトの指示に従ってインストール

node+npmを本家サイトにアクセスしてダウンロードする。

UNIX系OSではnvmをインストールしてからnode, npmをインストールするがfnmというクロスプラットフォームのパッケージマネージャーを使ってインストール。

ここまではすんなりといく。

# installs fnm (Fast Node Manager)
winget install Schniz.fnm

# configure fnm environment
fnm env --use-on-cd | Out-String | Invoke-Expression

# download and install Node.js
fnm use --install-if-missing 20

# verifies the right Node.js version is in the environment
node -v # should print `v20.18.0`

# verifies the right npm version is in the environment
npm -v # should print `10.8.2`

問題はこのfnmで設定したenvをPowerShellに記憶させるところだ。この設定は別のPowerShellを開くと忘れてしまうのだ。

fnmで設定する環境を永続化させる

まずはPROFILE環境変数(内容はPath)が存在するかどうか確認

Test-Path $PROFILE

Trueなら存在しているが、Falseなら存在しない。存在しない時には次のコマンドで生成する。

New-Item -Path $PROFILE -ItemType File -Force

先ほどのfnm設定を$PROFILEの最後の行に書き込む。作ったばかりならば空だろう。

notepad $PROFILE

を実行して

fnm env --use-on-cd | Out-String | Invoke-Expression

を書き込む。これで永続化はできるが、別のPowerShellを開くとデジタルサインされていないから読み込めない旨のエラーが出る。

$PROFILEに自己サイン証明書をつける

そのエラーを回避するために自己サイン証明書を$PROFILEに付与する。

まずPowerShellを管理者として開き、以下のコマンドで自己サイン証明書を発行する。

$cert = New-SelfSignedCertificate -Type CodeSigningCert -DnsName "YourName" -CertStoreLocation "Cert:\CurrentUser\My"

YourNameはPowerShellで表示されている自分のIDを入れればいい。ついで「然るべき場所」に移動しておく。

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Root", "CurrentUser")
$store.Open("ReadWrite")
$store.Add($cert)
$store.Close()

生成した証明書を$PROFILEに紐付ける

Set-AuthenticodeSignature -FilePath $PROFILE -Certificate $cert

場合によってはサインされたスクリプトなら実行できるように明示する必要があるかも知れない。

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser

ここまでやって新しいPowerShellを開くと、自分でサインした~.ps1を信頼して走らせるか尋ねられるかも知れない。その時はA(Always)を選べば良い。

Yarnのインストール

これは公式サイトで最新版のバイナリをmsiでインストールするのが良いだろう。npmでやるとyarn.ps1にも証明書をつける必要が出る。サブタイトルにつけたようなエラーが出るのだ。chocoもインストールできるなら利用してもいいが、会社などではダメというところも少なくないだろう。

これでようやく「普通に」nodeやyarnがPowerShellのコマンドとして扱えるようになる。

2024年10月現在

> yarn --version
1.22.22
> node -v
v20.18.0

のようなバージョンが入る。

コメントを残す