Как скомпилировать node js в exe
Перейти к содержимому

Как скомпилировать node js в exe

  • автор:

Как упаковать nodejs файл в .exe?

У меня есть парсер логов написанный на nodejs который принимает несколько аргументов, файл для чтения и файл для записи. Что лучше всего использовать для упаковки моего кода в исполняемый файл виндовс? Я пробовал nexe но дальше бинарника дело не дошло. Подскажите, расскажите, кто как это делает.

Отслеживать

задан 9 дек 2020 в 10:43

103 10 10 бронзовых знаков

если нет особых требований к приложению то можно упаковать в electron electronjs.org

9 дек 2020 в 10:48

можно запаковать как ресурс

9 дек 2020 в 11:00

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

npm install -g pkg pkg main.js 

Где main.js — ваш скрипт.

Отслеживать

ответ дан 9 дек 2020 в 13:23

Don2Quixote Don2Quixote

1,705 3 3 золотых знака 12 12 серебряных знаков 26 26 бронзовых знаков

Как скомпилировать node js в exe

Чтобы начать работать с TypeScript, установим необходимый инструментарий. Установить TypeScript можно двумя способами: через пакетный менеджер NPM или как плагин к Visual Studio

Установка через NPM

Для установки через NPM вначале естественно необходимо установить Node.js (если он ранее не был установлен). После установки Node.js необходимо запустить следующую команду в командной строке (Windows) или терминале (Linux):

npm install -g typescript

При установке на MacOS также требуется ввести команду sudo . При вводе данной команды терминал запросит логин и пароль пользователя для установки пакета:

sudo npm install -g typescript

Вполне возможно, что ранее уже был установлен TS. В этом случае его можно обновить до последней версии с помощью команды

npm update -g typescript

Для проверки версии необходимо ввести команду

tsc -v

Компиляция приложения

Для начала создадим каталог приложения. В моем случае это будут папка по пути C:/typescript . В каталог добавим файл index.html . Откроем этот файл в любом текстовом редакторе и определим в нем следующий код:

    Metanit.com   

Это обычный файл html, в котором определен пустой заголовок — элемент — в него мы будем выводить некоторое содержимое. И также на веб-странице подключается файл app.js .

Теперь в том же каталоге создадим файл app.ts . Причем именно app.ts , а не app.js, то есть файл кода typescrypt. Это также обычный текстовый файл, который имеет расширение .ts . И в app.ts определим следующее содержание:

class User < name : string; constructor(_name:string)< this.name = _name; >> const tom : User = new User("Том"); const header = this.document.getElementById("header"); header.innerHTML = "Привет " + tom.name;

Что здесь происходит? Сначала определяет класс User — шаблон данных, которые будут использоваться на веб-странице. Этот класс имеет поле name , которое представляет тип string , то есть строку. Для передачи данных этому полю определен специальный метод — constructor , который принимает через параметр _name некоторую строку и передает ее в поле name :

class User < name : string; constructor(_name:string)< this.name = _name; >>

Далее мы подробнее разберем создание и использование классов. Далее создаем константу tom , которая представляет этот класс:

const tom : User = new User("Том");

Иначе говоря, константа tom представляет некоторого пользователя, у которого имя «Том».

Затем получаем элемент с id header на веб-странице в одноименную константу header :

const header = this.document.getElementById("header");

То есть этот элемент будет представлять определенный на веб-странице index.html заголовок .

Далее с помощью свойства innerHTML меняем содержимое элемента:

header.innerHTML = "Привет " + tom.name;

В данном случае свойству innerHTML передается строку, к которой добавляется значение свойства tom.name . То есть мы ожидаем, что в заголовок на веб-странице будет выводится создаваемая здесь строка.

Сохраним и скомпилируем этот файл. Для этого в командной строке/терминале с помощью команды cd перейдем к каталогу, где расположен файл app.ts (в моем случае это C:\typescript). И для компиляции выполним следующую команду:

tsc app.ts

Компиляция TypeScript из командной строки

После компиляции в каталоге проекта создается файл app.js , который будет выглядеть так:

var User = /** @class */ (function () < function User(_name) < this.name = _name; >return User; >()); var tom = new User("Том"); var header = this.document.getElementById("header"); header.innerHTML = "Привет " + tom.name;

Первое приложение на TypeScript

И теперь мы можем кинуть веб-страницу index.html в браузер и увидеть результат работы написанного на TypeScript кода:

Как создать .exe файл для приложения на скрипта на NodeJS?

Здравствуйте, форумчане! Столкнулся со следующей проблемой. Написал небольшой скрипт на ноде. Для запуска скрипта требуется написать в командную строку:
node index.js arg1 arg2
Так вот. Хотелось бы сделать файл .exe, в котором бы можно было выбрать arg1(что-то вррде select), написать arg2(text edit zone) и нажать на кнопочку для запуска команды выше.

Не знаю в какую сторону двигаться, поскольку знаком с нодой недавно. Можете подсказать, люди добрые?

  • Вопрос задан более трёх лет назад
  • 8507 просмотров

Комментировать
Решения вопроса 1

MvcBox

Software Developer [C/C++/JS(for Node.js)/etc]
Ответ написан более трёх лет назад
Нравится 3 3 комментария

JaxAdam

Adik Izat @JaxAdam Автор вопроса

тут такое дело, я на электроне реализовал это все дело. Ток вот прикол в том, что в консоли надо node electron . вводить для запуска программы)

MvcBox

Adik Izat, не-а, не надо. Для электрона есть билдеры, которые не так сложно нагуглить)

JaxAdam

Adik Izat @JaxAdam Автор вопроса
Inviz Custos, спасибо за помощь, нашел библиотеку «electron-builder», ща будем учиться)
Ответы на вопрос 2

joeberetta

Шохрух Шаймардонов @joeberetta
Читай: https://epdf.pub/google-for-dummies.html

В дополнение к Inviz Custos
Есть также NodeGUI. Он сыроват еще. И как в оф.сайте пока пишут, используйте Electron, если вам нужно срочно свое приложение сделать и не морочиться с оптимизацией и прочими проблемами. Ну а в защиту НодГУИ могу сказать, что это обертка над Qt(погуглите сами), для NodeJs. За счет этого ваше nodejs приложение будет чутка оптимизированней чем решение на electron/nwjs

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Если windows то вы можете даже на том же javascript написать приложение (.net) с формочками и кнопочками, скомпилировать штатным компилятором, который идет с операционной системой (точнее это .net framework но он у всех 100% есть так как его таскают с собой даже драйвера)

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\jsc.exe — это компилятор
Почитайте пример https://www.phpied.com/make-your-javascript-a-wind. (почти первая же ссылка из гугла).
Недостаток, по умолчанию пути не прописаны и они зависят от версии установленного framework, информации о котором нет в переменных окружения и вытаскивать их либо поиском либо анализом реестра (майкрософт не умеет делать правильные и удобные окружения, никак, никогда)

К сожалению красиво примеров именно для javascript не найти но если воспользоваться visual studio и посмотреть примеры javascript windows form то можно написать что угодно.

Итоговый exe получится несколько килобайт, и при этом почти кроссплатформенный (с помощью mono можно запустить на linux)

Курсы javascript

я знаю, что javascript создавался как интерпретируемый язык, но может есть возможность скомпилировать код яваскрипта в исполняемый exe-файл?

15.04.2010, 00:36
Регистрация: 04.04.2008
Сообщений: 6,245
15.04.2010, 00:53
Новичок на форуме
Регистрация: 15.04.2010
Сообщений: 7

просто интересно, в интернете на этот вопрос неоднозначное мнение, но если рассуждать логически, то получается вот такой ответ — синтаксис javascript похож на C++ и значит существует возможность компиляции на машинный язык.

15.04.2010, 01:56
Регистрация: 02.01.2010
Сообщений: 6,469

Вариантов дофига:
1.Переименовать .html с js в .hta
2.Запускать .js файлы как есть.(для вывода юзать доп синтаксис JScript)
3.Всякое движки javascript, тот же ff на нём написан.
4. .
5. .
6. profit!

15.04.2010, 02:11
Новичок на форуме
Регистрация: 15.04.2010
Сообщений: 7

нужен вариант, в котором файл js.js компилировался бы в исполняемый файл js.exe, возможно ли такое?И это без всяких дополнений различными махинациями в исходном коде программы

15.04.2010, 02:11
Регистрация: 04.04.2008
Сообщений: 6,245

синтаксис это далеко не единственно И очень далеко не самая главная характеристика языка
например PHP гораздо ближе к C++, нежели чем JS
но при этом они(PHP и C++) все равно очень далеки от друг друга
но, все три языка имеют схожий(не идентичный)синтаксис

ну, вообще по сути любой интерпретируемый язык можно собрать в машинный код.
собираем его интерпретатор в машинный код, а в качестве входных данных указываем интерпретируемый файл
ВСЕ!

Итак вернемся к вопросу:
зачем вам понадобился именно исполняемый файл exe?
just 4 fun?
или с практической точки зрения

15.04.2010, 02:22
Новичок на форуме
Регистрация: 15.04.2010
Сообщений: 7

пока чисто теоретический интерес. Очень часто я встречал сообщения в интернете, что это невозможно, но ведь любой язык можно перевести в другой. Данные сообщения равносильны тому, например, что английский нельзя перевести на русский, но это как то глупо звучало бы, да? И данные сообщения исходят от считающих себя продвинутыми программистов.

15.04.2010, 03:09
Регистрация: 04.04.2008
Сообщений: 6,245

да
1)либо вручную на это понадобится куча денег
2)автоматически
не все языки одианаково хорошо переовдятся друг в друга автоматически
полноценны перевдчик из одного языка в другой начинает свою стоимость от 1000$
сделать просто так(без денег) такой переводчик мало кто возьмется и доведет до конца
не уверен, что есть такой переводчик для JS->компилируемый язык
скорее всего нету
а значит пока что невохможно

15.04.2010, 03:18
Новичок на форуме
Регистрация: 15.04.2010
Сообщений: 7

для меня это пока чисто теоретический вопрос, я люблю решать такие практически нерешаемые задачи, но сейчас на это у меня нет времени, так что пока интересуюсь поверхностно, но возможно в скором будущем я займусь этим вопросом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *