Google chrome NaCl助手进程在没有沙箱的情况下运行!运行npm测试时出错
我在运行npm测试时遇到问题。我收到的错误是:“进程运行时没有沙盒!”,这是真的,因为我使用“-no sandbox”选项运行浏览器。我必须运行这个选项,因为浏览器是以root用户身份运行的,我根本没有其他用户运行它的选项(这是docker映像)。 谁能帮我整理一下吗 另外,我正在以以下方式安装浏览器:Google chrome NaCl助手进程在没有沙箱的情况下运行!运行npm测试时出错,google-chrome,docker,npm,Google Chrome,Docker,Npm,我在运行npm测试时遇到问题。我收到的错误是:“进程运行时没有沙盒!”,这是真的,因为我使用“-no sandbox”选项运行浏览器。我必须运行这个选项,因为浏览器是以root用户身份运行的,我根本没有其他用户运行它的选项(这是docker映像)。 谁能帮我整理一下吗 另外,我正在以以下方式安装浏览器: RUN apt-get update RUN apt-get install -y nodejs npm RUN wget -q -O - https://dl-ssl.google.com/l
RUN apt-get update
RUN apt-get install -y nodejs npm
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get install -y apt-transport-https
RUN apt-get update
RUN apt-get install -y google-chrome-stable
提前谢谢 如果您使用karma运行测试,请确保在
karma.conf.js
此错误消息上使用ChromeHeadless
作为浏览器
NaCl helper process running without a sandbox!
…表示系统中没有setuid沙盒,因此程序无法启动/生成新的浏览上下文,即Chrome浏览器会话
解决方案 一个快速的解决方案是,如果您想运行Chrome并且只使用名称空间沙盒,您可以设置标志:
--disable-setuid-sandbox
--no-sandbox
此标志将禁用setuid沙盒(仅限Linux)。但是,如果您在没有适当内核支持命名空间沙盒的主机上这样做,Chrome将无法启动。此外,您还可以使用以下标志:
--disable-setuid-sandbox
--no-sandbox
此标志将对所有通常为沙盒的进程类型禁用沙盒
例如:
chromeOptions: {
args: ['--disable-setuid-sandbox', '--no-sandbox']
},
您可以在中找到详细的讨论
深潜 根据中的文档,需要一个
SUID
helper二进制文件来打开Linux上的沙箱。在大多数情况下,您可以使用以下命令为自己安装适当的沙箱:
build/update-linux-sandbox.sh
此程序将在/usr/local/sbin
中为您安装适当的沙盒,并告诉您在需要时更新.bashrc
但是,也可能有一些例外情况,例如,如果您的setuid
二进制文件已过期,您将收到以下消息:
Running without the SUID sandbox!
或
在这些情况下,您需要:
- 无论何时构建chrome,都要构建
(chrome\u沙盒
,而不是ninja-C xxx chrome\u沙盒
)ninja-C xxx chrome
- 构建后,执行
更新linux sandbox.sh
# needed if you build on NFS! sudo cp out/Debug/chrome_sandbox /usr/local/sbin/chrome-devel-sandbox sudo chown root:root /usr/local/sbin/chrome-devel-sandbox sudo chmod 4755 /usr/local/sbin/chrome-devel-sandbox
- 最后,您必须在
(或~/.bashrc
)中包含以下行:.zshenv