По умолчанию Windows связывает .js
файлы с Windows Script Host , автономным механизмом выполнения JS от Microsoft. Если вы наберете script.js в командной строке (или дважды щелкните .js
файл в проводнике), сценарий будет выполнен wscript.exe
.
Это может решить локальную проблему с глобальным параметром , но вместо этого вы можете связать .js
файлы node.exe
, чтобы набрать script.js в командной строке или двойном щелчке / перетаскивании элементов в сценарии они запускались с помощью Node.
Конечно, если, как и я, вы связали .js
файлы с редактором, так что двойной щелчок по ним открывает ваш любимый текстовый редактор, это предложение не принесет особой пользы. Вы также можете добавить к .js
файлам пункт контекстного меню «Выполнить с помощью узла» , хотя эта альтернатива не решает ваши потребности в командной строке.
Самым простым решением, вероятно, является использование командного файла - вам не обязательно иметь копию Node в папке, в которой находится ваш скрипт. Просто укажите полностью исполняемый файл Node:
"C:\Program Files (x86)\nodejs\node.exe" app.js %*
Другой альтернативой является это очень простое приложение C #, которое запускает Node, используя собственное имя файла + .js
в качестве сценария для запуска, и передает любые аргументы командной строки.
class Program
{
static void Main(string[] args)
{
var info = System.Diagnostics.Process.GetCurrentProcess();
var proc = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files (x86)\nodejs\node.exe", "\"" + info.ProcessName + ".js\" " + String.Join(" ", args));
proc.UseShellExecute = false;
System.Diagnostics.Process.Start(proc);
}
}
Поэтому, если вы назовете получившийся EXE-файл «app.exe», вы можете ввести, app arg1 ...
и Node будет запущен с командной строкой "app.js" arg1 ...
. Обратите внимание, что приложение загрузчика C # немедленно выйдет, а Node будет отвечать за окно консоли.
Поскольку это, вероятно, представляет относительно широкий интерес, я пошел дальше и сделал это доступным на GitHub , включая скомпилированный exe, если вам нравится садиться в фургоны с незнакомцами.