TypeScriptをnpmインストールで「permission denied」エラー対処方法【Mac】

mac端末でnode.js導入後、TypeScriptをインストールしようと「npm install -g typescript」をターミナルで実行したところ、mkdirコマンドで「permission denied」のエラーで失敗しました。

このようなパーミッションエラーでTypeScriptがインストールできない対処方法を調べたので解説します。

※今回のTypescriptはグローバルインストールを行った場合です。

macOSにnode.jsを導入しTypeScriptインストール

macOSでTypeScriptの開発環境を用意するには、前提条件としてnode.jsをインストールする必要があります。

node.jsを導入したあとにnpmコマンドでTypescriptをインストールすることができます。

※Macbookなどでnode.jsをインストールする方法は以下の記事で解説しています。

node.jsがインストールできたところで、「npm install -g typescript」TypeScriptのインストールに進められます。

「npm install -g typescript」実行がエラー

ただ、TypeScriptをmacにインストールしようと、「npm install -g typescript」を実行したところ、エラーが発生してインストールに失敗しました。

「npm install -g typescript」でTypeScriptをMacでグローバルインストールしようとしたところ、Permission deniedのエラーでインストール失敗

上部にはnode.jsのバージョンが表示されているため、node.js自体は正常にインストールできています。

しかし、macのターミナルのスクリーンショットの赤枠部分のようにパーミッションエラーが発生しています。

「tsc –version」を実行しても、インストールできていないため、「command not found: tsc」と表示されます。

npm ERR! code EACCES
npm ERR! syscall mkdir
npm ERR! path /usr/local/lib/node_modules/typescript
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript'
npm ERR!  [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/typescript'] {
  npm ERR!   errno: -13,
  npm ERR!   code: 'EACCES',
  npm ERR!   syscall: 'mkdir',
  npm ERR!   path: '/usr/local/lib/node_modules/typescript'
}

再度実行しても同じエラーメッセージが出てしまうため、TypeScriptのグローバルインストールができません。

mkdir時にパーミッションエラーが原因

npmコマンドでTypeScriptのインストールに失敗するのは、ディレクトリを作成するmkdirコマンドでパーミッションエラーが発生しているからです。

mkdirで作成するディレクトリ周りの権限が不足しているため、ディレクトリ作成ができず、インストールに失敗しています。

そのため、mkdirで作成しようとしているpath周りのパーミッションを変更することでインストールができるようになります。

typescriptインストールで「permission denied」の解決方法

実際に、permission deniedのエラーでTypeScriptのインストールができない場合の解決策は、以下のコマンドを実行します。

 sudo chown -R \$(whoami) \$(npm config get prefix)/{lib/node_modules,bin,share}

chownでnpm周りのディレクトリのパーミッションを変更することでエラー原因を解消できます。

実際に上記のchownコマンドを実行してみました。

「npm install -g typescript」でTypeScriptをMacでグローバルインストールしようとしたところ、Permission deniedのエラーが生じた際はchownで当該のパーミッションを変更することでエラー解消可能

sudoコマンドはmacOSのパスワードを求められるため、Macのログインしているユーザーのパスワードを入力します。

その後、ターミナルにプロンプトが帰ってくれば、実行成功です。

再度「npm install -g typescript」を打ち込んで、再実行してみます。

「npm install -g typescript」でTypeScriptをMacでグローバルインストールしようとしたところ、Permission deniedのエラーが生じた際はchownで当該のパーミッションを変更後、再度typeScriptをインストールすると成功してTypeScriptのバージョンが表示

「add 1 package, and audited 2 packages in *s」というメッセージが表示され、TypeScriptのインストールに成功します。

正確にインストールできているか「tsc –version」を実行すると、インストールしたTypeScriptのバージョンが表示されるので、確認できます。

まとめ・終わりに

今回、macOSでnode.jsをインストールした後、TypeScriptをグローバルインストールしようとして、パーミッションエラーで失敗した場合の対処方法を紹介しました。

npm install -g typescript」でインストールしようとした際に「permission denied」が表示されてインストールできないことがあります。

この場合、npm周りのディレクトリのパーミッションをchownで変更することで解消できます。

chownコマンドをsudoで実行後、再度npmでTypeScriptをインストールすると、今度は成功します。

もし、パーミッションエラーでTypeScriptをMacでインストールできない場合は今回紹介した方法で解消するか試してみてください。