npm install puppeteer showing permission denied errors

帅比萌擦擦* 提交于 2019-12-05 09:34:28

EDIT 20th April 2019:

The easy solution suggested by lauraalvarezz1 is,

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

This is okay as long as you trust puppeteer and want it to install puppeteer globally.

However beware of using --unsafe-perm=true for permission related problems. Reasons are:

  • Running unsafe-perm=true with sudo, as a non-root user, will give the script root access. This might be okay only if you trust the script and do not concern about security that much.
  • You might need to use --no-sandbox in every script you run, because the chrome installed with this command might not run without this parameter. See this github issue.

You have installed npm with sudo. Thus anything you install globally will require sudo.

To install anything on var/www/html folder, either you have to own that folder,

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

Or you can use nvm to manage npm. Technically it will use your home directory and your current user.

After installing nvm, you can install puppeteer globally with it,

npm i -g puppeteer

or you have to use sudo

sudo npm install --save puppeteer

However chromium will not be downloaded due to permission error, that's why you have to use ---unsafe-perm=true as stated before.

Security Related Resources:

  • Resolve this without sudo, you can use this answer.
  • Learn more about best practices dealing with /var/www folder, refer to this answer.

Best of luck!

lauraalvarezz1

Run this on your terminal:

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

Before you begin, make sure you have the most recent version of Node.js.

The Puppeteer Documentation states:

Note: Puppeteer requires at least Node v6.4.0, but the examples below use async/await which is only supported in Node v7.6.0 or greater.

You can check which version of Node.js you have using the following command:

node -v
# OR nodejs -v

If your version of Node.js is less then v7.6.0, you can completely uninstall your current version of Node.js.

Then, you can use complete the reinstallation using a 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

You can check the new versions of Node.js and NPM installed on your system:

node -v
npm -v

Finally, you can install Puppeteer:

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

Now you can run Puppeteer scripts using the node command:

node puppeteer-script.js
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!