web-dev-qa-db-ja.com

npm installpuppeteerが許可拒否エラーを表示

プロジェクトの依存関係としてpuppeteerをインストールできず、ノードを再インストールしようとしました。誰かがこれを修正する方法についてのアイデアを持っていますか? Ubuntu 17.10x64を実行している

Sudo apt-get purge nodejs;
curl -sL https://deb.nodesource.com/setup_8.x | Sudo -E bash -;
apt-get install -y nodejs;
Sudo npm install -g n;
Sudo n stable;

ノードバージョン:

$ node -v
v9.4.0
$ npm -v
5.6.0

インストールしようとしています:

root@server:/var/www/html# npm install --save puppeteer

エラーメッセージ:

> [email protected] install /var/www/html/node_modules/puppeteer
> node install.js

ERROR: Failed to download Chromium r536395! Set "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" env variable to skip download.
{ Error: EACCES: permission denied, mkdir '/var/www/html/node_modules/puppeteer/.local-chromium'
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/var/www/html/node_modules/puppeteer/.local-chromium' }
npm WARN [email protected] No description

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2018-02-19T15_55_52_669Z-debug.log

参照されている問題でこれを修正する方法が見つかりません: https://github.com/GoogleChrome/puppeteer/issues/375

5
d-_-b

2019年4月20日編集:

Lauraalvarezz1によって提案された簡単な解決策は、

Sudo npm install -g puppeteer --unsafe-perm=true

Puppeteerを信頼し、puppeteerをグローバルにインストールしたい限り、これは問題ありません。

ただし、許可関連の問題には--unsafe-perm=trueを使用することに注意してください。理由は次のとおりです。

  • 非rootユーザーとしてSudoでunsafe-perm = trueを実行すると、スクリプトにrootアクセスが許可されます。これは、スクリプトを信頼し、セキュリティについてそれほど気にしない場合にのみ問題ない可能性があります。
  • このコマンドでインストールされたchromeは、このパラメーターなしでは実行されない可能性があるため、実行するすべてのスクリプトで--no-sandboxを使用する必要がある場合があります。これを参照してください github issue

Sudoを使用してnpmをインストールしました。したがって、グローバルにインストールするものにはすべてSudoが必要です。

var/www/htmlフォルダーに何かをインストールするには、そのフォルダーを所有している必要があります。

Sudo chown -R $USER /var/www/html

または、 nvm を使用してnpmを管理できます。技術的には、ホームディレクトリと現在のユーザーを使用します。

Nvmをインストールした後、それを使用してpuppeteerをグローバルにインストールできます。

npm i -g puppeteer

または、Sudoを使用する必要があります

Sudo npm install --save puppeteer

ただし、許可エラーのためにクロムはダウンロードされません。そのため、前述のように---unsafe-perm=trueを使用する必要があります。

セキュリティ関連リソース:

  • Sudoを使用せずにこれを解決すると、 この回答 を使用できます。
  • / var/wwwフォルダーを扱うベストプラクティスの詳細については、 この回答 を参照してください。

頑張ってください!

9
Md. Abu Taher

ターミナルでこれを実行します。

Sudo npm install -g puppeteer --unsafe-perm=true
7
lauraalvarezz1

始める前に、Node.jsの最新バージョンを使用していることを確認してください。

操り人形師のドキュメント は次のように述べています。

注:Puppeteerには少なくともNode v6.4.0が必要ですが、以下の例では、Node v7.6.0以降でのみサポートされるasync/awaitを使用しています。

次のコマンドを使用して、使用しているNode.jsのバージョンを確認できます。

node -v
# OR nodejs -v

Node.jsのバージョンがv7.6.0未満の場合は、 現在のバージョンのNode.jsを完全にアンインストールする

次に、complete PPAを使用した再インストール を使用できます。

Sudo apt update
curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh
Sudo bash nodesource_setup.sh
Sudo apt install nodejs
Sudo apt install build-essential

システムにインストールされているNode.jsとNPMの新しいバージョンを確認できます。

node -v
npm -v

最後に、Puppeteerをインストールできます。

Sudo npm install puppeteer --unsafe-perm=true --allow-root

これで、nodeコマンドを使用してPuppeteerスクリプトを実行できます。

node puppeteer-script.js
3
Grant Miller