きっかけ
Typescriptを使うにあたり、Node.js,npm,Typescriptのインストールをしたのですが、npm,Typescriptのインストール成功を確認できないトラブルが諸々あったのでまとめます。
Copilotと相談しながらいろいろ試した結果、解決したので、経緯を含めて記録します。
トラブルの内容
VScodeのターミナル(PowerShell)で以下を実行して、Node.jsのインストールを試みました。
winget install OpenJS.NodeJS.LTS
この後バージョン確認ができるか確認しましたが、以下のエラーが出ました。
node -v
node -v node : 用語 'node' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、 パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:1 文字:1
対処
再インストール(Repair)
node.js公式からRepairを選択して再インストールしましたが、特に改善しませんでした。
環境変数への追加
node.jsのパスをユーザー環境変数に追加したことで、node.jsのバージョン確認は成功するようになりました。
C:\Program Files\nodejs\
しかし、npmのバージョン確認はうまくいきませんでした。
Dockerを使ったインストール
node.js公式に従い、Dockerを使った再インストールを行いました。この場合はnode.js,npmともにスムーズにインストールでき、バージョン確認もできました。
しかしこれではDocker環境の中でしか使えないのが煩わしいです。
ターミナルの変更
VScodeのターミナルをcmdに変更したところ、npmのバージョン確認もできるようになりました。
この状態でTypescriptのインストールも実行しました。
npm install -g typescript
バージョン確認も成功。
tsc -v
それでも相変わらず、PowerShellではnpm,Typescriptともにバージョン確認できませんでした。
以下のnpmのパスをユーザ環境変数に加えましたが、それでも改善しませんでした。
C:\Users\<ユーザ名>\AppData\Roaming\npm
管理者権限と実行ポリシー
以上を試した後、Powershellで実行ポリシー確認を行いました。
Get-ExecutionPolicy
この結果がRestrictedとなっていたため、管理者として実行するべく以下を実行しました。
Set-ExecutionPolicy RemoteSigned
結果、以下のメッセージが出ているのを確認しました。
Set-ExecutionPolicy : レジストリ キー 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' へのアクセスが拒否され ました。 既定 (LocalMachine) のスコープの実行ポリシーを変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動してくだ
さい。現在のユーザーの実行ポリシーを変更するには、"Set-ExecutionPolicy -Scope CurrentUser" を実行してください。 発生場所 行:1 文字:1
- Set-ExecutionPolicy RemoteSigned
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
そこで以下を実行し、ユーザースコープで実行ポリシーを変更した結果、ようやくPowerShellでのバージョン確認に成功しました。
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
まとめ
結果的に、パスの環境変数への追加と実行ポリシーの変更で解決しましたが、いろいろ試したことでcmdターミナルを触るきっかけにもなりました。似た問題に遭った方の役に立ちますと幸いです。
参考文献