Ошибка при использовании Application.currentApplication() в JavaScript для автоматизации (OSA)

При использовании Application.currentApplication() в сценарии OSA выдается следующее предупреждение при запуске из командной строки:

warning: failed to get scripting definition from /usr/bin/osascript; it may not be scriptable.

Почему это происходит и что с этим можно сделать?

Пример

приложение.js:

#!/usr/bin/env osascript -l JavaScript

var app = Application.currentApplication();
app.includeStandardAdditions = true;
console.log('Hello, I’m ' + app.pathTo(this));

Вывод оболочки:

❯❯❯ ./app.js
2015-03-01 12:39:29.611 app.js[65539:6266286] warning: failed to get scripting definition from /usr/bin/osascript; it may not be scriptable.
Hello, I’m /Users/aaron/Desktop/app.js

person aaronk6    schedule 01.03.2015    source источник


Ответы (1)


в примечаниях к выпуску JXA говорится следующее:

<сильный>6. Получение приложения, выполняющего скрипт

Application.currentApplication()

И да, я думал, что это также даст мне объект сценария, указывающий на сам мой сценарий.

Я протестировал его прямо в редакторе скриптов, используя ваш JavaScript:

var app = Application.currentApplication();
app.includeStandardAdditions = true;
console.log('Hello, I’m ' + app.pathTo(this));

и вкладка События дала мне

app = Application("Skript-Editor")
    app.pathTo(null)
    /* Hello, I’m /Users/.../Desktop/app.scpt */

При запуске этого app.scpt из osascript функция currentApplication() возвращает osascript, и среда предупреждает, что приложение может не поддерживать сценарии... Это ошибка? Я не знаю, osascript ЯВЛЯЕТСЯ исполняемым приложением И это не скрипт :-/

А иначе: Как тогда app может выполнить функцию pathTo и почему ей передается null?

просто мои 2 цента... Майкл / Гамбург

person ShooTerKo    schedule 04.03.2015
comment
Спасибо за усилия и привет Гамбургу. Мне это тоже кажется ошибкой — если не считать предупреждения, скрипт работает совершенно нормально. - person aaronk6; 05.03.2015