npm install puppeteer 显示权限被拒绝错误
npm install puppeteer showing permission denied errors
我无法将 puppeteer
安装为项目依赖项,我已尝试重新安装节点。任何人都知道如何解决这个问题? 运行 Ubuntu 17.10 x64
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
错误信息:
> puppeteer@1.1.0 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 project@1.0.0 No description
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! puppeteer@1.1.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the puppeteer@1.1.0 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
编辑 2019 年 4 月 20 日:
lauraalvarezz1 建议的简单解决方案是,
sudo npm install -g puppeteer --unsafe-perm=true
只要您信任 puppeteer 并希望它在全球范围内安装 puppeteer 就可以了。
但是要小心使用 --unsafe-perm=true
来解决与权限相关的问题。原因是:
- 运行 unsafe-perm=true 使用 sudo,作为 non-root 用户,将授予脚本 root 访问权限。仅当您信任该脚本并且不太关心安全性时,这可能没问题。
- 您可能需要在您 运行 的每个脚本中使用
--no-sandbox
,因为如果没有此参数,使用此命令安装的 chrome 可能不会 运行。看到这个 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
然而,由于权限错误,chromium 将不会被下载,这就是为什么你必须如前所述使用 ---unsafe-perm=true
。
安全相关资源:
- 不用sudo解决,可以用this answer.
- 了解有关处理 /var/www 文件夹的最佳做法的更多信息,请参阅 this answer。
祝你好运!
运行 在您的终端上:
sudo npm install -g puppeteer --unsafe-perm=true
开始之前,请确保您拥有最新版本的 Node.js。
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.
您可以使用以下命令检查 Node.js 的版本:
node -v
# OR nodejs -v
如果你的Node.js版本低于v7.6.0,你可以completely uninstall your current version of Node.js.
然后,你可以使用完成 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
您可以检查系统上安装的 Node.js 和 NPM 的新版本:
node -v
npm -v
终于可以安装Puppeteer了:
sudo npm install puppeteer --unsafe-perm=true --allow-root
现在您可以 运行 使用 node
命令的 Puppeteer 脚本:
node puppeteer-script.js
我做到了:
yarn install --ignore-scripts
yarn install
.
并且它在没有 sudo
或全局包安装的情况下工作。
它应该也适用于 npm
。
我有 Ubuntu 20.04.
我无法将 puppeteer
安装为项目依赖项,我已尝试重新安装节点。任何人都知道如何解决这个问题? 运行 Ubuntu 17.10 x64
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
错误信息:
> puppeteer@1.1.0 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 project@1.0.0 No description
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! puppeteer@1.1.0 install: `node install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the puppeteer@1.1.0 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
编辑 2019 年 4 月 20 日:
lauraalvarezz1 建议的简单解决方案是,
sudo npm install -g puppeteer --unsafe-perm=true
只要您信任 puppeteer 并希望它在全球范围内安装 puppeteer 就可以了。
但是要小心使用 --unsafe-perm=true
来解决与权限相关的问题。原因是:
- 运行 unsafe-perm=true 使用 sudo,作为 non-root 用户,将授予脚本 root 访问权限。仅当您信任该脚本并且不太关心安全性时,这可能没问题。
- 您可能需要在您 运行 的每个脚本中使用
--no-sandbox
,因为如果没有此参数,使用此命令安装的 chrome 可能不会 运行。看到这个 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
然而,由于权限错误,chromium 将不会被下载,这就是为什么你必须如前所述使用 ---unsafe-perm=true
。
安全相关资源:
- 不用sudo解决,可以用this answer.
- 了解有关处理 /var/www 文件夹的最佳做法的更多信息,请参阅 this answer。
祝你好运!
运行 在您的终端上:
sudo npm install -g puppeteer --unsafe-perm=true
开始之前,请确保您拥有最新版本的 Node.js。
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.
您可以使用以下命令检查 Node.js 的版本:
node -v
# OR nodejs -v
如果你的Node.js版本低于v7.6.0,你可以completely uninstall your current version of Node.js.
然后,你可以使用完成 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
您可以检查系统上安装的 Node.js 和 NPM 的新版本:
node -v
npm -v
终于可以安装Puppeteer了:
sudo npm install puppeteer --unsafe-perm=true --allow-root
现在您可以 运行 使用 node
命令的 Puppeteer 脚本:
node puppeteer-script.js
我做到了:
yarn install --ignore-scripts
yarn install
.
并且它在没有 sudo
或全局包安装的情况下工作。
它应该也适用于 npm
。
我有 Ubuntu 20.04.