Ваш скрипт не работает с введенным вами вводом (если вы на самом деле добавляете отсутствующий аргумент), потому что '{\"change_request\":\"chg0123456\"}'
это не то, что JS может анализировать как строку JSON. Кроме того, вы не передаете в скрипт никаких пустых значений из своего ввода (просто пустое пространство не считается фактическим вводом).
Вам нужно изменить его на '{"change_request":"chg0123456"}'
и передать пустое значение в виде пустой строки ''
.
Этот вход работает правильно.
node index.js DELETE https://Test1234.execute-api.us-west-2.amazonaws.com us-west-2 /qa/transit-connectivity/api/v1/sites/tdcloudtsttd03 AKIAJ4Y5DGqwewqeqw CFdAgsdtqweqwe/SKqDezdqweewofWrUXXBbQoMy '' '{"change_request":"chg0123456"}'
Если вам действительно нужен объект в этом формате, то вам нужно удалить из него \
символов, прежде чем вы сможете вызвать JSON.parse
для него.
awsAdditionalParams = JSON.parse(
process.argv[9].split('\\').join('') || '{}'
);
Если вы сначала хотите проверить, не является ли последний аргумент не пустым, и только затем запустить приведенный выше код, вы можете использовать троичный оператор, как этот.
awsAdditionalParams = process.argv[9]
? JSON.parse(process.argv[9].split('\\').join('') || '{}')
: '';
Нет никакого прямого способа сделать его. Попробуйте CommandProxy.
Read сообщение в блоге очень тщательно. Действительно необходимо создать два различных проекта: собственный исполняемый файл ОС и приложение AIR. Собственный исполняемый файл разжигает Ваше приложение AIR. Приложение AIR в свою очередь запрашивает на исполняемый файл обработать запросы уровня ОС.
Загрузка источник от Google Code и создают два проекта - Visual Studio / Моно для демонстрационного C# exe и другого - для приложения AIR. Здесь ссылка, которая описывает, как настроить первого.
В основном файле приложения Вашего AIR MXML, необходимо сделать следующее:
Создают CommandProxy
объект, добавьте несколько слушателей события для обнаружения соединения, и Command
ответ и ошибка.
Подключение к собственному exe через connect
вызов
В конечном счете обработчик для connect
, создайте новое Command
, например, ScreenshotCommand
и выполните его (через CommandProxy.execute
метод)
... и вот именно!
Hope это помогает.
Посмотрите это сообщение в блоге: Выполнение EXE-файл из краткого изложения AIR
:
, "Если действительно необходимо выполнить внешние EXE-файлы, и нет никакого другого способа решить проблему, тогда Вы удостоверитесь, что пользователь запускает то другое программное обеспечение прежде, чем запустить приложение AIR".
Прямо сейчас нет никакого способа сделать это исходно с AIR. Существуют некоторые опции, хотя:
Ответ состоит из двух частей. Во-первых, если вы действительно ДОЛЖНЫ запустить файл .exe, единственный выход - использовать командный прокси. Лично использование одного в .Net / Mono немного преувеличено. Я не знаю Mono, но просьба к вашим пользователям установить .Net и AIR отпугнет их всех. Кроме того, если бы я собирался попросить пользователей установить Mono, почему бы просто не написать пользовательский интерфейс в Mono и покончить с этим ...?
Вы могли бы написать простой командный прокси на Ruby, который действительно был бы кроссплатформенным и меньше хлопот примерно за 5 минут (я только что сделал это, если вы хотите, чтобы код прокомментировал меня здесь, и я отправлю его). Если вы хотите контролировать процесс после его запуска, это более серьезное дело. Что касается распространения и т. Д., Я считаю, что Ruby будет проще.
С другой стороны , проверьте эту идею . Джефф предлагает использовать URL-запрос из AIR. В принципе, если ваш браузер правильно интерпретирует это, вы готовы к работе. Код выглядит так
var request : URLRequest = new URLRequest('C:\\playlists\\test.m3u');
Я думаю, что при небольшом творчестве (особенно с типами Mime) это второе решение может даже работать для Winamp (например, список воспроизведения или что-то в этом роде).
Удачи и благодарности Вас за вопрос, который, вероятно, является обманом, но Google нашел только этот, поэтому вы выиграли :)
Я думаю, FluorineFx делает то, что вы хотите: http://aperture.fluorinefx.com/?p=5
AIR 2.0 будет иметь такую возможность.
Ожидается, что бета-версия выйдет к концу года (2009 г.) и выйдет в первой половине 2010 г.
http: //blogs.adobe .com / air / 2009/10 / previewing_adobe_air_2_at_adob.html
API собственных процессов Начиная с AIR 2, разработчики будут иметь доступ к собственному API процессов, который позволит приложениям вызывать собственные приложения на локальном компьютере и взаимодействовать с ними. Чтобы сохранить кроссплатформенный характер формата файлов .air, приложения, использующие собственный API процессов, должны быть развернуты как собственные установщики, такие как .exe и .dmg. SDK среды выполнения AIR будет включать поддержку создания базовых встроенных установщиков.
В AIR 2.0 теперь вы можете:
if(NativeProcess.isSupported)
{
var file:File = File.desktopDirectory;
file = file.resolvePath("StyleLookupold.exe");
var nativeProcessStartupInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
nativeProcessStartupInfo.executable = file;
var process:NativeProcess = new NativeProcess();
process.start(nativeProcessStartupInfo);
}
Вам также необходимо добавить это в свой файл дескриптора.
<supportedProfiles>extendedDesktop</supportedProfiles>
Другой способ сделать это - запустить простой вебсервер на локальной машине (в фоновом режиме) и вызвать его методы с помощью HTTPService.
Фоновый веб-сервер может быть, например, в питоне: http://fragments.turtlemeat.com/pythonwebserver.php
И он может запускать исполняемые файлы и предоставлять функциональность, которую AIR не может.
Это поддерживает чистоту Flex-кода, потому что он реализует только REST-интерфейс и питон (или другой язык) остальную часть работы. Вы также можете извлечь выгоду из использования python в качестве интерфейса к sqlite базе данных или вы можете запустить весь django в качестве веб-сервера.
Единственным недостатком является то, что сервер должен быть уже запущен на локальном хосте ... и прослушивать какой-нибудь порт (т.е. 81). Вы, вероятно, можете сделать это, запустив сервер при запуске системы.
Это не самый лучший способ, но в некоторых случаях он может помочь вашему проекту, как это сделал для меня.