Чтобы объяснить вашу проблему, сначала важно понять, что хотя эта функция называется build
, она применяется в той же степени для запуска интерпретируемой программы, что и для здания что угодно;меньше думайте об этом как о инструменте «сборки», а скорее как о инструменте «запустить какую-нибудь внешнюю программу, чтобы сделать что-то».
С учетом вышесказанного, Sublime поставляется с несколькими предустановленными системами сборки для разных языков, но JavaScript не является одним из них.Возможно, это связано с тем, что в целом неясно, предназначен ли определенный файл JavaScript для использования в браузере или выполняется с помощью чего-то вроде node
, но это только предположение.
В вашем случае текст No build system
буквально говорит вам, что вы сказали Sublime автоматически выбирать подходящую систему сборки для типа редактируемого файла, но он не нашел ни одного, и поэтому он ничего не может сделать.
Решением проблемы может быть либо установка стороннего пакета, включающего систему сборки JavaScript (см. Управление пакетами ), либо создание его самостоятельно.
Хорошее практическое правило для Sublimeв том, что если есть команда, которую вы можете выполнить из командной строки, которая будет делать то, что вы хотите, и вам не нужно взаимодействовать с этой командой (то есть ей не нужно задавать вам вопросы до или во время выполнения чего-либо), вы можете настроить Sublime для запуска этой команды для вас.
Один инструмент, который вы можете использовать для выполнения JavaScript is NodeJS , который предоставляет команду с именем node
, которая может выполнять файлы JavaScript, если вы ее установите:
tmartin:dart:~> cat sample.js
console.log("Hello, world!")
tmartin:dart:~> node sample.js
Hello, world!
Так как это команда, которую мы можем выполнить из терминала, чтобы сделатьчто мы хотим, и нам не нужно взаимодействовать с ним, чтобы сказать, как что-то делать, мы можем настроить систему сборки для его использования.
В качестве примера того, как это сделать, выберитеTools > Build System > New Build System...
из меню, а затем замените содержимое файла следующим кодом, затем сохраните его в том месте, в котором Sublime по умолчанию будет выглядеть примерно так: JavaScript.sublime-build
:
{
"shell_cmd": "node \"${file}\"",
"selector": "source.js"
}
Это просто говоритчто при выполнении этой сборки Sublime должна использовать команду node
и предоставить ей имя файла, который вы в данный момент редактируете, и что эта система сборки применяется к source
файлам типа js
(JavaScript).
С этим на месте, если вы выберете Tools > Build System > Automatic
или Tools > Build System > JavaScript
(имя в меню отражает имя, которое вы использовали для файла), вы сможете использовать Ctrl + B выполнить вашу прогруутра:
Примечание: Это более старое изображение, в котором используется cmd
вместо shell_cmd
;оба примера будут работать одинаково, но shell_cmd
- рекомендуемый путь, если у вас нет веских причин не делать этого.
Вы можете проверить официальная документация по системам сборки для получения дополнительной информации о параметрах, доступных вам в системе сборки.
Важные примечания:
Если выполучить ошибку типа command not found
или что-то подобное, это означает, что вы либо неправильно ввели команду, эта программа не установлена, либо вам нужно указать компьютеру (и, следовательно, Sublime), где его найти, изменив свой PATH
;как вы это делаете, зависит от конкретной системы.
Убедитесь, что вы сохранили новый файл вручную хотя бы один раз, прежде чем пытаться запустить его;до того, как вы это сделаете, файл еще не находится на диске и не может быть выполнен, что может вызвать странные ошибки.Это может быть хорошей идеей, чтобы убедиться, что установлен флажок Tools > Save all on build
, чтобы убедиться, что ваши файлы на диске всегда обновляются при сборке, но это не сохранит новый файл, у которого пока нет имени.
Я сказал это дважды, но это стоит повторить;если вам нужно каким-либо образом взаимодействовать с командой в , это не сработает для вас (без изменений с вашей стороны).Это включает в себя, если вы пытаетесь выполнить скрипт, который хочет, чтобы вы взаимодействовали с ним (например, он спрашивает у вас ваше имя, а затем печатает его и тому подобное).В таком случае ваша программа будет зависать вечно, потому что она ожидает ввода, который вы не можете предоставить.