2016-07-11 4 views
1

Это похоже на вопрос here. Однако я использую Ubuntu, и принятый ответ предыдущего вопроса не кажется актуальным.Node.js открыть Chrome Ubuntu 16.04 LTS

Я использую узел для вызова сценария оболочки, который в свою очередь вызывает хром. Терминал открывается, а echo - URL-адрес, но браузер Chrome не открывается. Я также попробовал/usr/bin/google-chrome после обнаружения его с помощью команды which, а также google-chrome-stable безрезультатно. Почему хром не запускается на Ubuntu с дочерним процессом node.js? Im работает настольная версия 16.04 LTS. Если я запускаю этот сценарий оболочки на терминале без узла, он отлично работает.

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); 
    } 
}); 

SHELL (ss.sh)

#!/bin/bash 
echo $1 
google-chrome $1 --start-maximized 

ВЫВОД: enter image description here

Edit: Я просто попытался запустить это на другом поле работает в 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(); 
    } 
} 
} 
+0

В: поэтому, если вы наберете команду типа 'gnome-terminal -x /my/directory/ss.sh http: // www.google.com', она« отлично работает »? Q: что произойдет, если вы запустите 'gnome-terminal -x pwd' (или« ls »или« echo Hello ») из Node.js – paulsm4

+0

Да, чтобы Q1, он открывает скрипт оболочки, который открывает хром. Q2 дайте мне попробовать запустить с узла ... 1 мин. Спасибо. – Chris

+0

Да, я добавил три cmds из Q2 в свой скрипт ss.sh и все они работают – Chris

ответ

1

Ответ на это разрешение файла и оно пришло от @ paulsm4 комментарий. Он ссылается на @ A.B. ответ от here.

Как только он отправляет свой комментарий в качестве ответа, я принимаю и удаляю его.

+0

Прохладный - рад, что это сработало! ПРЕДЛОЖЕНИЕ: просто примите свой ответ :) – paulsm4

+0

@ paulsm4 Я узнал от вас этот ответ! Я чувствую себя плагиатом, пока вы не ответите :) Я просто не хотел, чтобы другие публиковали ответ, так как вы решили его в своем комментарии. – Chris

Смежные вопросы