Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome NaCl助手进程在没有沙箱的情况下运行!运行npm测试时出错_Google Chrome_Docker_Npm - Fatal编程技术网

Google chrome NaCl助手进程在没有沙箱的情况下运行!运行npm测试时出错

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

我在运行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/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
    )中包含以下行:


在哪里可以获得此更新-linux-sandbox.sh?而且我没有使用docar