【記事対象者】
「npm install -g @aws-amplify/cli」実行後、
コマンドプロンプト、PowerShellそれぞれでamplifyをコマンドとして実行したい人向け
【事の発端】
Amplify CLIを使うため、AWS公式チュートリアルを参考にnpm installを実行、
インストール完了か確認するためバージョン確認したがそれぞれでコマンドとして認識されていないエラーが発生
npm install -g @aws-amplify/cli
amplify -v
コマンドプロンプト↓
'amplify' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
PowerShell↓
amplify : 用語 'amplify' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:1 文字:1
+ amplify
+ ~~~
+ CategoryInfo : ObjectNotFound: (amplify:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
【原因】
それぞれのshell上でパスが通っていなかった
【使用環境】
-Windows10
-npm 8.19.2
【対応策】
注意:パスはコマンドプロンプロとPowerShellは別なためそれぞれでパスを通す必要がある
(知らなかった、、)
まず、通すパスを確認するため下記コマンドを実行。
npm config get prefix
npmを使用してインストールしたモジュールが格納されているフォルダへのパスが表示される
私の環境では、C:\Users\potita\AppData\Roaming\npmでした
コマンドプロンプト
#現在のパス一覧を確認
echo $PATH
①「システム環境変数の編集」を開く
②「環境変数」押下
③「システム環境変数(S)」のPathを選択して「編集」押下
④「新規」からパスを追加
もう一度、echo $PATHで表示されているか確認
(一度コマンドプロンプトを閉じてから実行した方がいいかも)
PowerShell
#現在のパス一覧を確認
echo $ENV:Path
#パスを追加 この形式→$ENV:Path="パス;"+$ENV:Path
$ENV:Path="C:\Users\potita\AppData\Roaming\npm;"+$ENV:Path
PowerShellは実行ポリシーの影響で、パスを通した後にamplify -vを実行しても無効なスクリプトと表示されてしまいます
そのため実行ポリシーを一度変更して、実行する必要があります
#現在の実行ポリシー確認
Get-ExecutionPolicy
#Restricted(デフォルト)からRemoteSignedへ変更する(プロセスの期間だけ)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
(セキュリティ上、変えたままでいいのかちょっとわからない、、コマンドプロンプトで実行できちゃうならもはや関係なくね?とも思うんですが、、)
【参考記事様】
https://qiita.com/onizine/items/2e9d3024d16cdeb63f46
https://qiita.com/ponsuke0531/items/4629626a3e84bcd9398f
【余談】
パスが通っていないことが原因なのはわかったが、
自分の場合、npm install -g @aws-amplify/cliした後にコマンドプロンプトを管理者権限で開くとamplifyコマンドが通るという現象が起こった(環境パス通していないはずなのに、、)
今はコマンド使えるで問題ないが、気になったので原因わかったら追記します