1. ホーム
  2. node.js

[解決済み] OSX で npm モジュールをインストールする際にパーミッションが拒否される。

2023-01-06 17:12:56

質問

インストールしようとしている node-g.raphael をインストールしようとしているのですが、以下のエラーが発生します。

Bender-03:htdocs alfred$ sudo npm install node-g.raphael --save
Password:

> [email protected] install 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir 
  '/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify/build'
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/usr/local/bin/node" 
  "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" 
  "rebuild"
gyp ERR! cwd 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
gyp ERR! node -v v8.8.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
  (node_modules/contextify):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
  install: `node-gyp rebuild`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ [email protected]
added 2 packages and updated 1 package in 6.556s

試しに この解決策 を試してみましたが、私の問題は解決されず、まだ同じエラーが発生します。

この問題を解決するために、何か追加できることがあれば教えてください。

どのように解決するのですか?

これを npmのパーミッションの修正 から見て、それが役に立ったので、多分あなたも試してみることができるでしょう。

オプション 1: npm のデフォルトディレクトリへのパーミッションを変更する

  1. npmのディレクトリへのパスを探します。

    npm config get prefix

    多くのシステムにおいて、これは /usr/local .

    警告 : もし表示されたパスが単に /usr と表示された場合は オプション2 にしないと、パーミッションがめちゃくちゃになります。

  2. npmのディレクトリの所有者を現在のユーザー名(自分のユーザー名)に変更します。

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

    これは、npmや他のいくつかのツールで使用されるサブフォルダのパーミッションを変更するものです( lib/node_modules , bin そして share ).

オプション2:npmのデフォルトディレクトリを別のディレクトリに変更する

npmが使用するデフォルトのディレクトリの所有権を変更したくない場合があります (例. /usr ) の所有権を変更したくない場合があります。これは、例えば他のユーザーとシステムを共有している場合などに、いくつかの問題を引き起こす可能性があるからです。

代わりに、全く別のディレクトリを使用するようにnpmを設定することができます。この例では、ホームフォルダー内の隠しディレクトリを使用します。

  1. グローバルインストール用のディレクトリを作成します。

    mkdir ~/.npm-global

  2. 新しいディレクトリパスを使用するようにnpmを設定します。

    npm config set prefix '~/.npm-global'

  3. を開くか、作成します。 ~/.profile ファイルを開き、次の行を追加してください。

    export PATH=~/.npm-global/bin:$PATH

  4. コマンドラインに戻り、システム変数を更新します。

    source ~/.profile

テスト : を使用せずにグローバルにパッケージをダウンロードする。 sudo .

`npm install node-g.raphael --save`

ステップ2-4の代わりに、対応するENV変数を使用することができます(例えば、変更したくない場合は ~/.profile ):

NPM_CONFIG_PREFIX=~/.npm-global

オプション3: パッケージマネージャを使用する。

Mac OS で Node を新規にインストールする場合、この問題は Homebrew パッケージマネージャを使用することで、この問題を完全に回避することができます。 Homebrew は正しいパーミッションでいきなりセットアップします。

brew install node

私はこれが役立つことを願っています