![使用 node 和 socket-io 在后台启动 Google Chrome 38](https://linux22.com/image/1427958/%E4%BD%BF%E7%94%A8%20node%20%E5%92%8C%20socket-io%20%E5%9C%A8%E5%90%8E%E5%8F%B0%E5%90%AF%E5%8A%A8%20Google%20Chrome%2038.png)
我需要使用将使用 AD 用户的服务在后台启动 Google Chrome。
Windows 服务正在运行 node.js,我通过 Socket-io 请求启动 Chrome。Chrome 应该打开选定的页面,一旦页面完全加载,socket 应该关闭它。
问题是服务打开 Chrome 然后立即关闭,Chrome 甚至无法加载请求的页面。仅当我使用服务在后台运行节点时,问题仍然存在。
在将 Chrome 从 37 升级到 38 之前,一切都运行完美。
我还注意到,每个打开的 Chrome 实例都有一个 rundll32.exe 实例(chrome 将其用于 flash)。并且 rundll32.exe 实例是持久的,看起来它们正在使 chrome 崩溃。当我运行节点并在前台启动 chrome 时,我没有看到任何 rundll32.exe。
有人知道可能出了什么问题吗?
更新
我启动了 chrome--enable-logging --v=1
并看到了这些错误。但不知道该如何处理它们。
[1844:1872:1023/153655:ERROR:gpu_process_transport_factory.cc(418)] Failed to establish GPU channel.
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:1872:1023/153655:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:3408:1023/153656:VERBOSE1:ssl_client_socket_nss.cc(3477)] CT Verification complete: result -158 Invalid scts: 0 Verified scts: 0 scts from unknown logs: 0
[1844:3408:1023/153656:ERROR:child_process_launcher.cc(344)] Failed to launch child process
[1844:3408:1023/153701:VERBOSE1:bandwidth_metrics.h(95)] Bandwidth: 294975Kbps (avg 294975Kbps)
[1844:3408:1023/153723:VERBOSE1:ssl_client_socket_nss.cc(3477)] CT Verification complete: result -158 Invalid scts: 0 Verified scts: 0 scts from unknown logs: 0
更新
Chronium 中存在的问题是:
https://code.google.com/p/chromium/issues/detail?id=426858&thanks=426858&ts=1414158389
答案1
我们遇到了完全相同的问题,只是设置略有不同。我们在服务器上有一个 TeamCity 代理,通过 node.js 运行 protractor,使用 WebDriver 在后台打开 Chrome。几天前它停止工作了,经过一番研究,我们发现了与您的类似的日志文件。我认为 Chrome 38 在后台运行确实存在问题。当从控制台启动 protractor 时,一切正常。
一个办法对我们来说就是将 Chrome 降级至 37并禁用自动更新。这不是那么简单,因为 Google 不发布旧版本。您可以搜索“Chrome 37 下载”或在其他计算机上查看。Chrome 将安装程序保存在:C:\Program Files (x86)\Google\Chrome\Application\37.0.2062.124\Installer
。请注意,由于处于离线状态而不是在线状态,因此它应该超过 ~20MB。