質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

npmがインストールできない

n2018
n2018

総合スコア19

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

3回答

0グッド

0クリップ

3714閲覧

投稿2021/10/29 10:07

macbook air 2017を使っています。
ターミナルを使ってNode.jsをインストールしようとしたとき、nodenvはインストールできたのですが、
npmがどうしてもインストールできずエラーが出てしまいます。
以前インストールしようとしてできなかったcoffe scriptが邪魔しているのではと
思ったものの解決方法がわからず…。

https://qiita.com/mdrq/items/b815bd360d46d22ea6d8
↑ここに書かれていることで

$ rm -rf node_modules
$ rm package-lock.json
$ rm -rf ~/.node-gyp/

の削除なども試しましたが結局エラーが出てしまい、非常に困っています。

どうかお力を貸していただけると幸いです。

* 17.0.1 (set by /Users//.nodenv/version) Air:~ $ npm install -g sass npm notice npm notice New major version of npm available! 7.19.1 -> 8.1.2 npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.1.2 npm notice Run npm install -g npm@8.1.2 to update! npm notice npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /usr/local/lib/node_modules/sass npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/sass' npm ERR! [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/sass'] { npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/usr/local/lib/node_modules/sass' npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator. npm ERR! A complete log of this run can be found in: npm ERR! /Users//.npm/_logs/2021-10-29T07_54_48_641Z-debug.log Air:~ $ npm init -y Wrote to /Users//package.json:

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

tiitoi

2021/10/29 10:13

sudo npm install -g sass で実行したらどうなりますか?
n2018

2021/10/29 10:15

Air:~ o$ sudo npm install -g sass Password: added 16 packages, and audited 17 packages in 5s 1 package is looking for funding run `npm fund` for details found 0 vulnerabilities Air:~ $ と出たんですけど読み込めてるという意味でしょうか?
tiitoi

2021/10/29 10:17

エラーがでなかったということはインストールできたということではないでしょうか? permission denied, mkdir '/usr/local/lib/node_modules/sass' というエラーが出ていたので、インストールに管理者権限が必要だったということだと思います。
n2018

2021/11/01 02:00

返信が遅れましてすみません。そうなのですね!ご協力ありがとうございました!

回答3

2

ベストアンサー

'/usr/local/lib/node_modules/sass'

なんちゅう所にインストールしとるんじゃ……

Macbookは外見のUIはともかく内部ではUnixを採用しているので
Filesystem Hierarchy Standardの影響を強く受けています。

インストールを行おうとした先は/usrディレクトリの配下の/usr/local/libですが、
この/usrがかなりの曲者。

大部分のマルチユーザ(全ユーザのための)ユーティリティとアプリケーションを格納する。

ホスト固有の情報や時間の経過に伴い変化する情報は他の場所に保存される(前者は /etc、後者は /var の下)。
共有可能でリードオンリーのデータであるべき。
この事は /usr がFHS準拠の様々なホスト間で共有可能であるべき事を意味しており、書き込みができないようにしなければいけない[29]。
ファイルシステムで二番目に主要なセクションなどとも言われる。

/usrディレクトリ配下のファイルは、全て「共有可能でリードオンリーのデータであるべき」です。

npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/sass'

という訳でこうなるのは当然です。
短期的にはsudoコマンドを利用してroot権限を使って無理やり保存するという手段はとれるとは思いますが非推奨。

/Users/[user-name]/[Node.js管理ツール]/current/binのように
Usersの自分のディレクトリの配下に作られるべきでしょうね。


もし質問文の下記の情報が本当であれば、
nodenvによる管理は即刻捨てて別のNode.js導入手段を用いるべきでしょう。

* 17.0.1 (set by /Users//.nodenv/version) Air:~ $ npm install -g sass

流石にゴミ過ぎる挙動……もしnodenvが悪くないなら導入解説の記事が悪い。
誰が推奨しているのか知らんけど、なんでnodenvに群がるのか心底分からん。
多分粗悪なブログ記事に騙されてるのかな?

私からはVoltaを推奨します。

bash

1# 公式サイトに従ってインストール 2$ curl https://get.volta.sh | bash 3 4$ volta install node@latest 5 6$ node -v 7v17.0.1 8 9$ npm -v 108.1.0

投稿2021/11/02 04:58

miyabi-sun

総合スコア21039

r.s_09, n2018👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

n2018

2021/11/02 05:27

とても丁寧なアドバイスありがとうございました。別のものを試すといいのですね…やってみます! 実はこれはHTML +CSS実践講座(2020年発行) https://www.amazon.co.jp/%E5%88%9D%E5%BF%83%E8%80%85%E3%81%8B%E3%82%89%E3%81%A1%E3%82%83%E3%82%93%E3%81%A8%E3%81%97%E3%81%9F%E3%83%97%E3%83%AD%E3%81%AB%E3%81%AA%E3%82%8B-HTML-CSS%E5%AE%9F%E8%B7%B5%E8%AC%9B%E5%BA%A7-%E7%9B%B8%E5%8E%9F-%E5%85%B8%E4%BD%B3-ebook/dp/B08G4PBN98/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=HTML+%2BCSS%E8%AC%9B%E5%BA%A7&qid=1635830624&sr=8-2 という本の「フロントエンド開発に必要なNode.jsのインストール」ページを見ながら進めていたものなのです。その本にはmac OSならnodenvを使うと書いてありました。 そこにはその後、npmをインストール後にjQery、gulpをインストール、sassのコンパイル…とつづくのですが、全くの素人でもVoltaで進めることが可能でしょうか????すみません知識がないのですごく詰まりそうで????もちろん最初は自分で調べます!!
miyabi-sun

2021/11/02 05:46

> npmをインストール後にjQery、gulpをインストール、sassのコンパイル…とつづくのですが なるほど、全体的に情報が古い…… でもまぁ、温故知新でそっから勉強するのも良いかもねって感じ > 全くの素人でもVoltaで進めることが可能でしょうか とりあえずNode.jsとnpmの導入はVoltaを使ってください 回答欄のコマンドを順番に打ち込むだけです。 Node.js(とそれに引っ付いてくるパッケージ管理ツールのnpm)の導入さえ出来れば後は同じです。 書籍の通りに進めるでしょう。 nodenvのアンインストールは下記を参考にディレクトリを削除すれば大丈夫 https://qiita.com/282Haniwa/items/a764cf7ef03939e4cbb1
n2018

2021/11/02 06:00

2020年発行でも古いんですね…でもありがとうございます!早速nodenvのアンインストールから始めます!
n2018

2021/11/02 06:59

すいません、教えていただいたページにnpmをアンインストールとあったので下記を参考に https://qiita.com/wagi0716/items/94193a80502f9d81a9e0 アンインストールを行おうとしたのですが、以下のようなエラーが出てしまいました???? @Air ~ % npm uninstall -g npm npm ERR! code EACCES npm ERR! syscall rename npm ERR! path /usr/local/lib/node_modules/npm npm ERR! dest /usr/local/lib/node_modules/.npm-i9nnxROI npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI' npm ERR! [Error: EACCES: permission denied, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'] { npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'rename', npm ERR! path: '/usr/local/lib/node_modules/npm', npm ERR! dest: '/usr/local/lib/node_modules/.npm-i9nnxROI' npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator. npm ERR! A complete log of this run can be found in: npm ERR! /Users/ユーザー名/.npm/_logs/2021-11-02T06_47_29_946Z-debug.log
miyabi-sun

2021/11/02 07:12

記事が違います。 その中途半端にインストールしたnpmのグローバルインストール先が`/usr/local/lib/node_modules`なのでそうなるでしょうね。 とりあえず現状を把握したいので`which npm`のコマンドを打ち込んでみてください。 `/Users/ユーザー名/xxx`で始まるなら素直に`rm -rf xxx`でディレクトリを消してしまえば大丈夫です。 ターミナルのコマンド認識を行う順番というのは 環境変数PATH(`echo $PATH`コマンドで確認出来る)の左から順番に 「第一キーワードの実行ファイルあるかな?ないかな?」で探していって実行ファイルを見つけたらそれを起動させるという挙動になっています。 nodenvやnodebrew、Volta等のNode.jsのバージョン管理ツールというのは、 「環境変数PATHを編集し特定ディレクトリを確認しとけ」という指示を出して 間に合わせのnodeやnpm等の実行ファイルをそこにおいて、 ショートカットを書き換えるといった手法でバージョン管理をしています。 なのでその記事のアンインストール方法で削除する必要はありません。 nodenvの場合は`/Users/ユーザ名/.nodenv`というディレクトリが作られて その中にbinディレクトリみたいなのを作って、環境変数PATHをそこに向けるような指示を飛ばしているので、`rm -rf ~/.nodenv`コマンド等でそのディレクトリを削除すれば自動的にアンインストールが完了します。 この辺の事情があるので、 星の数ほどインストール方法もありますし、 それに適したアンインストール方法もあります。 なので、勝手に別の記事を跨いでその方法を実行するのは悪手になる事もあります。
n2018

2021/11/02 07:43 編集

えっと、すいません、教えていただいた記事にはnpmの削除方法が載ってなかった(自分で探してとあった)ので別のを探したのです…。 rm -rf ~/.nodenvだと何も起きない(改行されて次の入力モードになる)のですがこれであってますでしょうか?
miyabi-sun

2021/11/02 07:41

> rm -rf ~/.nodenvだと何も起きない(改行されて次の入力モードになる)のですがこれで会ってまうでしょうか? あってますよ。 このコマンドはディレクトリの削除ですが何も表示されない動作になります。 `/Users/ユーザ名`のホームディレクトリで`ls -la`コマンドで`.nodenv`ディレクトリが消えている 事を確認してください。 一つ重要な考え方として`npm`は個別にインストールしたり削除するものではありません。 Node.jsに寄り添ったモジュール管理ツールで、JavaScriptファイルをあっちこっちに配置するのがnpmですから、Node.jsがないのにnpmだけあっても何の意味もありません。 なのでNode.jsをインストールすれば勝手に付いてくるし Node.jsをアンインストールすれば自然に消えるもの、それがnpmなんです。 公式にMacにNode.jsをインストールする方法はこれです。 https://nodejs.org/ja/download/ Node.jsやnpmを試したいだけならば、この「macOS Installer (.pkg)」からダウンロードしてインストールするのも良いと思います。 nodeenvのようなものはOSのコマンド認識の穴を突いたようなやり方です。 Node.jsが公式でAプロジェクトとBプロジェクトで違うバージョンで動作させたいみたいなニーズに対応してくれないから、ゴリ押しで解決したような手法となっています。 まぁ、LinuxやUnixマシンは手作業で環境変数PATHを書き換えて自作のツールを突っ込んで無限に便利にしていくものなので邪道ってわけでもないですが。
n2018

2021/11/02 08:01

ありがとうございます!.nodenvは消えているようです!npmは個別にインストールしたり〜というお話でしたが、ホームディレクトリに.npmがありました。これは消しても問題ないのでしょうか?そして.nodenvが消えている=node.jsがアンインストールされたという解釈で合ってますでしょうか?
miyabi-sun

2021/11/02 08:55

試しに`node -v`や`npm -v`等のコマンドを打ち込んで見てください。 「コマンドが見つかりませんでした!」エラーが出た事を確認して晴れてアンインストール完了です。 ホームディレクトリの`.npm`は消して問題ありません。 もし次回別手段でNode.js(+ npm)をインストールしたタイミングで不都合があれば npmが勝手に判断して`.npm`ディレクトリを再度作成する挙動をするはずです。
n2018

2021/11/02 09:19

やったところ、何故か削除されていなかったためwhich nodeなので場所を出して手動で消し、無事アンインストールされました!!これからvoltaを入れようと思います!

0

"permission denied"と出ているので、権限の問題なのではないでしょうか。
権限が必要なディレクトリにmkdirを使ってフォルダを生成しようとしているが、OSに拒否されてエラーになっているとエラー文を読むとわかります。

以下のようなサイトが役に立ちそうです。
https://qiita.com/wafuwafu13/items/43db67bfabe1540fdc2c

あとはnpm installの前にsudoつけてみるとかでしょうか。
権限を付与してあげると後々楽になると思います。

投稿2021/11/01 04:50

r.s_09

総合スコア17

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

technocore

2021/11/01 04:56

nodenvでインストールするnode.jsは、自分のホームディレクトリにインストールされます。 権限の問題ではありません。
r.s_09

2021/11/01 05:02

そうですか。あなたの回答で解決すると良いですね。

0

>nodenvはインストールできたのですが、npmがどうしてもインストールできず

ところでnode.jsはインストールできたのですか?

投稿2021/10/29 11:32

編集2021/10/29 11:32
technocore

総合スコア7122

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2021/11/04 03:53

こちらの回答が複数のユーザーから「過去の低評価」という指摘を受けました。

回答へのコメント

n2018

2021/11/01 02:03

ご協力ありがとうございます!そして返信が遅くなってしまい申し訳ありませんでした???? $ node -v でv16.5.0と出るのでインストールできていると思います!
technocore

2021/11/01 02:15

nodenvでインストールしたnode.jsを認識できていますか? $ nodenv versions system 14.18.0 * 16.11.1 (set by /Users/ユーザ名/.nodenv/version) $ where node /Users/ユーザ名/.nodenv/shims/node $ where npm /Users/ユーザ名/.nodenv/shims/npm
n2018

2021/11/01 06:34

このように出ました。 Air:~ ユーザ名$ nodenv versions system * 17.0.1 (set by /Users/ユーザ名/.nodenv/version) Air:~ ユーザ名$ where node -bash: where: command not found Air:~ ユーザ名$ where npm -bash: where: command not found
technocore

2021/11/01 06:48

nodenvでnode.jsはインストール済みですが、そのディレクトリを環境変数PATHに追加していない状態です。 nodenvを設定するための以下の1行をbashの設定ファイル(.bash_profile、.bashrcなど)に記述してください。 if which nodenv > /dev/null; then eval "$(nodenv init -)"; fi 環境変数PATHの先頭にnode.jsのディレクトリが自動的に追加されます。
n2018

2021/11/01 08:01

すみません、ターミナルはほとんど触ったことがないので、どこにファイルがあるか検索してもわかりませんでした????どこにあるのでしょうか?
technocore

2021/11/01 08:09

ホームディレクトリの直下にあります。 なければ作ってください。
n2018

2021/11/01 08:17

すみません、何分初心者なので作り方がわかりません。 https://mebee.info/2019/09/29/post-1523/ ↑上記のページを参考に作ろうとしたらターミナルに何も記述できなくなってしまいました。
technocore

2021/11/01 08:28

エディタは何をつかっているのでしょうか? viが使えないのでしたら、nanoを使うと良いでしょう。
n2018

2021/11/01 09:03 編集

エディタを使わず直接ターミナルに書き込んでいました。 nanoの他にVisual studio codeではダメでしょうか?
technocore

2021/11/01 09:16

使い慣れたエディタで構いません。 ただし、.bash_profile、.bashrcなどは隠し(不可視)ファイルです。 ファイルを指定する際、注意してください。
n2018

2021/11/01 09:30

そうなのですね、隠しファイルも確か表示させる設定にしていた気がするので無事表示されました。 profile.bash_profileという名前でホームディレクトリに置いてみたものの、相変わらず where node -bash: where: command not found と表示されてしまいました…何がいけないのでしょう?
technocore

2021/11/01 09:35

>profile.bash_profileという名前で そんな名前ではありません。
n2018

2021/11/01 10:09

というと?どんな名前で保存すればいいのでしょうか?.bash_profileのみですか?
technocore

2021/11/01 10:16

それは回答済みです。
n2018

2021/11/02 02:09

どこで回答されたでしょうか?15:48のものをおっしゃっているなら「拡張子を.bash_profileにする」程度にしか読み取れません。初心者は「ファイルは必ず名前をつける」以外の発想がないので.bash_profileのみで保存するとは考えられません。.bash_profileで保存しなおしましたが相変わらず-bash: where: command not foundのままです。
technocore

2021/11/02 03:05

>「拡張子を.bash_profileにする」程度にしか読み取れません。 それは拡張子の意味ではなくドット(.)で始まるファイル名です。 下記のnodenv初期化コマンドを、シェルの設定ファイルに記述してください。 if which nodenv > /dev/null; then eval "$(nodenv init -)"; fi シェルにbashを使っているなら.bash_profile(または.bashrc)、 zshを使っているなら.zprofile(または.zshrc)に記述すれば良いです。 記述後PATHに反映させるために、ターミナルを再起動してください。
n2018

2021/11/02 03:36

ご回答ありがとうございます。 試したところ、(途中でbashからzshに変更) Last login: Tue Nov 2 12:26:00 on ttys000 @Air ~ % where node /Users/ユーザー名/.nodenv/shims/node /usr/local/bin/node @Air ~ % where npm /Users/ユーザー名/.nodenv/shims/npm /usr/local/bin/npm となりました。
technocore

2021/11/02 03:57 編集

>/Users/ユーザー名/.nodenv/shims/node >/Users/ユーザー名/.nodenv/shims/npm あなたのホームにインストールされたnode.jsが、先に認識できているようです。 npm install -g でパッケージのインストールなど試してみてください。 $ npm install -g sass $ npm list -g /Users/ユーザ名/.nodenv/versions/16.11.1/lib ├── corepack@0.9.0 ├── express-generator@4.16.1 ├── npm@8.0.0 └── sass@1.43.4
n2018

2021/11/02 04:00 編集

このように出ました。 @Air ~ % npm install -g added 1 package, and audited 3 packages in 2s found 0 vulnerabilities @Air ~ % npm list -g /Users/ユーザー名/.nodenv/versions/17.0.1/lib ├── corepack@0.10.0 ├── ユーザー名@1.0.0 -> ./../../../.. └── npm@8.1.0
technocore

2021/11/02 04:00

>@Air ~ % npm install -g パッケージ名を指定していません。 $ npm install -g sass $ npm list -g /Users/ユーザ名/.nodenv/versions/16.11.1/lib ├── corepack@0.9.0 ├── express-generator@4.16.1 ├── npm@8.0.0 └── sass@1.43.4
n2018

2021/11/02 05:10

sass(パッケージ名)を入れないといけないのですね、 こうなりました。 ~ % npm install -g sass changed 16 packages, and audited 17 packages in 2s 1 package is looking for funding run `npm fund` for details found 0 vulnerabilities ~ % npm list -g /Users/ユーザー名/.nodenv/versions/17.0.1/lib ├── corepack@0.10.0 ├── ユーザー名@1.0.0 -> ./../../../.. ├── npm@8.1.0 └── sass@1.43.4
technocore

2021/11/02 05:15 編集

npmのグローバル環境にインストールできていますので、sassが使えるはずです。 $ where sass /Users/Technocore/.nodenv/shims/sass $ sass --version 1.43.4 compiled with dart2js 2.14.4
n2018

2021/11/02 05:58

承知いたしました。長々とありがとうございました。
r.s_09

2021/11/04 04:08

なるほど。非常に参考になる回答ですね!

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。