web-dev-qa-db-ja.com

OSXでnpmモジュールをインストールするときに許可が拒否されました

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

このソリューション を試しましたが、問題は解決せず、同じエラーが発生します。

これを解決するために追加できるものがあれば教えてください。

35

これを npmのアクセス許可を修正する から見ましたが、助けてくれたかもしれません。

  • オプション1:許可をnpmのデフォルトディレクトリに変更する

    1. Npmのディレクトリへのパスを見つけます。

      npm config get prefix

多くのシステムでは、これは/usr/localになります。

警告:表示されたパスが/usrのみの場合、Option 2または許可を台無しにします。

  1. Npmのディレクトリの所有者を現在のユーザーの名前(ユーザー名)に変更します。

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

これにより、npmおよびその他のツール(lib/node_modulesbin、および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

TestSudoを使用せずにパッケージをグローバルにダウンロードします。

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

手順2〜4の代わりに、対応するENV変数を使用できます(たとえば、~/.profileを変更したくない場合)。

NPM_CONFIG_PREFIX=~/.npm-global
  • オプション3:これを処理するパッケージマネージャーを使用します。

Mac OSでNodeを新規インストールする場合は、Homebrewパッケージマネージャーを使用してこの問題を完全に回避できます。 Homebrewは、適切な権限を設定してすぐに設定します。

brew install node

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

104
antzshrek