запускает osascript (AppleScript) из NodeJS

#browser #node.js #applescript #exec #osascript

#браузер #node.js #applescript #exec #osascript

Вопрос:

Я знаю, что, вероятно, мне этого очень не хватает,

но кто-нибудь знает, почему это продолжает возвращать ошибку?

 $ node -v amp;amp; node
v0.4.6
> var cmd = 'osascript -e "open location "http://google.com""';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });

//Error message
> { 
    stack: [Getter/Setter],
    arguments: undefined,
    type: undefined,
    message: 'Command failed: 15:20: syntax error: A “:” can’t go after this identifier. (-2740)n',
    killed: false,
    code: 1,
    signal: null 
}
  

Возможно, это как-то связано с двойными кавычками в cmd ?

Ответ №1:

Вероятно, просто проблема с цитированием. Это работает для меня:

 $ node -v amp;amp; node
v0.4.8
> var cmd = 'osascript -e 'open location "http://google.com"'';
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error); });
  

Кстати, если вы просто хотите открыть URL-адрес, нет необходимости проходить через AppleScript. Просто используйте команду открыть:

 > var cmd = 'open "http://google.com"';
  

Комментарии:

1. большое спасибо @sakra, который сработал очень хорошо 🙂 также приветствую подсказку, в которой говорится, что applescript не был необходим … да, мне действительно нужно было открыть URL-адрес в браузере по умолчанию. Еще раз спасибо за вашу помощь

Ответ №2:

Это упрощено с помощью обратных ссылок в текущей версии узла

 $ node -v amp;amp; node
v10.5.0
> let cmd = `osascript -e 'open location "http://google.com"'`
> require('child_process').exec(cmd, function (error, stdout, stderr) { console.log(error) })
  

и для команды open

 var cmd = `open "http://google.com"`