这是一个与 here 类似的问题。 .但是我使用的是 Ubuntu,上一个问题的接受答案似乎不相关。
我正在使用 Node 调用一个 shell 脚本,该脚本又调用 chrome。终端打开并回显 url,但 chrome 浏览器未打开。从 which
发现/usr/bin/google-chrome 后,我也尝试过命令以及 google-chrome-stable
无济于事。为什么 chrome 不能在带有 node.js 子进程的 Ubuntu 上启动?我正在运行桌面版本 16.04 LTS。如果我在没有 Node 的终端上运行这个 shell 脚本,它运行得很好。
JS:
var exec = require('child_process').exec,
child;
child = exec('gnome-terminal -x '+__dirname+'/ss.sh http://www.google.com',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});
外壳 (ss.sh)
#!/bin/bash
echo $1
google-chrome $1 --start-maximized
输出:

编辑:我刚刚尝试在另一个运行 Ubuntu 14.04 的机器上运行它并收到错误:未能创建/home/user/.pki/nssdb 目录。情节变厚了。
JAVA:如果我在 Java 中使用几乎相同的代码运行它,它会完美运行:
public static void main(String[] args) {
try {
String url = args[0];
ProcessBuilder pb = new ProcessBuilder("/home/user/ss.sh", url);
pb.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
最佳答案
答案是文件权限,它来自@paulsm4 评论。他引用@A.B.来自 here 的回答.
一旦他发布他的评论作为答案,我将接受并删除它。
关于Node.js 打开 Chrome Ubuntu 16.04 LTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317480/