操作系统:Ubuntu 16.04.3 LTS
我尝试使用
ng test
对 Angular 项目运行单元测试,但无法启动浏览器并给出错误 ERROR [launcher]: Cannot start Chrome
。即使 puppteer 也只能在无头模式下运行,因为
headless: false
它会给出错误 UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Failed to launch chrome!
另外在
xdg-open https://example.com
上它给出了日志
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening 'https://example.com/
因此可以肯定地说 Chrome 有问题,而不是我正在运行的应用程序/技术有问题。 但我还使用以下方式安装了谷歌浏览器
wget https://dl.google.com/linux/linux_signing_key.pub
sudo apt-key add linux_signing_key.pub
sudo apt update
sudo apt install google-chrome-stable
然而,一切都没有改变。
编辑
/usr/bin/xdg-open
文件有以下内容,如果有帮助的话
# if BROWSER variable is not set, check some well known browsers instead
if [ x"$BROWSER" = x"" ]; then
BROWSER=www-browser:links2:elinks:links:lynx:w3m
if [ -n "$DISPLAY" ]; then
BROWSER=x-www-browser:firefox:iceweasel:seamonkey:mozilla:epiphany:konqueror:chromium:google-chrome:$BROWSER
fi
fi
首先,我的问题中的第三种情况,即
/usr/bin/xdg-open: 778: /usr/bin/xdg-open: links2: not found ...
发生了,因为我没有在我的ubuntu系统上安装这些文本浏览器,我使用Putty
远程访问该系统。
其次,很可能是由于这种远程访问,
$DISPLAY
变量出现在null
文件中。因此,为了使其在本地系统上可用的显示设置上打开链接,必须使用 Putty 的 x11 转发概念;首先下载适用于 Windows 的 usr/bin/zdg-open
,然后在启用 x11 的情况下运行 Putty,之后上述问题(针对所有情况)都得到解决。如果 x11 被禁用,链接将在我安装的文本浏览器中打开,如
Xming
links
然后输入
sudo apt-get install libnss3
在您的终端中。
就是这样,希望能成功。
google-chrome
出现此问题的原因是 Chrome 认为另一个实例已在使用您的个人资料运行。这可能是由于您的系统用户名发生变化,导致 Chrome 的进程管理混乱。
解决方案:
rm ~/.config/google-chrome/ -rf
killall chrome
killall chromium
Chrome 使用 rm ~/.config/google-chrome/SingletonLock
通过删除
SingletonLock
文件,您实际上是在告诉 Chrome,没有其他实例正在使用此配置文件,从而允许它重新开始。注意:如果您仍然遇到问题,您可能需要更新文件所有权:
SingletonLock