Подтвердить что ты не робот

Sublime Text CoffeeScript build system: `env: node: нет такого файла или каталога`

Я пытаюсь создать систему сборки CoffeeScript в Sublime Text 3, но я продолжаю получать следующую ошибку:

env: node: No such file or directory
[Finished in 0.0s with exit code 127]
[cmd: ['coffee', '-o','/Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/script', '-cw', '/Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/coffee']]
[dir: /Users/jcourtdemone/Sites/autotempest.com/new_design_sandbox/static/coffee]
[path: /usr/bin:/bin:/usr/sbin:/sbin]

Моя система сборки выглядит так:

{
    "name": "Coffee - AT",
    "cmd": ["coffee","-o","${project_path:${folder}}/static/script","-cw","${project_path:${folder}}/static/coffee"],
    "selector": "source.coffee",
    "path":"/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/lib/node_modules/coffee-script/bin"
}

Две вещи странные об этом.

1) Он говорит, что ищет в /usr/bin, где существует символическая ссылка на coffee.

2) Из-за (1) я переопределил $PATH, чтобы включить фактическое местоположение coffee, которое /usr/local/lib/node_modules/coffee-script/bin, но по какой-то причине $PATH не переопределяется должным образом, оно придерживается по умолчанию $PATH.

Примечания:

i) Я проверил, что все пути верны и проходят нормально через регулярную команду терминала.

ii) Пробовал с переменной "shell": true в системе сборки.

iii) У меня есть другая система сборки для Compass, которая работает нормально.

Кто-нибудь сталкивается с подобными проблемами или проблемами? Любые идеи?

4b9b3361

Ответ 1

В терминале введите which node, затем создайте символическую ссылку на это место в /usr/bin. Например, если node живет в /usr/local/bin, создайте символическую ссылку следующим образом:

sudo ln -s /usr/local/bin/node /usr/bin/node

Если вы посмотрите на источник своего coffee script, вы, вероятно, обнаружите, что первая строка - это что-то вроде строк:

#!/usr/bin/env node

Код выхода 127 в Sublime означает, что команда env не удалась - поэтому в вашем случае система сборки находит coffee, но она не может выполнить ее, потому что двоичный код node не находится в Sublime путь поиска по умолчанию.

Существует два способа переопределить путь поиска по умолчанию для Sublime. Первый (и самый простой) - всегда открывать его из командной строки, используя встроенную команду subl. Если вы являетесь пользователем операционной системы OS X и не против возиться с важными системными настройками, посмотрите мой пост на unix.SE о том, как изменить значение по умолчанию /usr/bin:/bin:/usr/sbin:/sbin путь, который вы видите. Будьте предупреждены, что если вы не будете делать что-то правильно, вы можете нарушить свою систему. Однако, если вы используете Mountain Lion (10.8.X), и вы точно следуете инструкциям, все должно быть хорошо. (Я не обновился до Mavericks, поэтому никаких гарантий относительно того, будет ли он работать с этой версией.)

Ответ 2

Как решить проблему в системе Ubuntu

Дело в том, что команда "кофе" вызовет /usr/bin/ node, чтобы продолжить свою работу, однако исходная команда "node" для приложения node в системе Ubuntu изменена с "node" to "nodejs", чтобы избежать конфликта имен. Именно по этой причине оболочка будет вам соответствовать "/usr/bin/env: node: нет такого файла или каталога". всякий раз, когда вы печатаете

$ coffee

Чтобы решить проблему, просто позвольте оболочке найти что-то с именем "node" в пути поиска по умолчанию, и этот так называемый "node" будет способствовать nodejs. Команда "nodejs" находится по пути /usr/bin/nodejs.

Мы будем использовать символьную ссылку для ссылки "node" с nodejs и поместите ссылку "node" в путь поиска по умолчанию, чтобы оболочка ее находила.

sudo ln -s /usr/bin/nodejs /usr/bin/node 

Но будьте осторожны, убедитесь, что у вас нет другой команды "node" в /usr/bin/, вы можете проверить ее, попробовав запустить

$ which node

Я НЕ знаю, что делать, если вы установили другое приложение "node" .

Ответ 3

В Ubuntu вы можете установить пакет nodejs-legacy

sudo apt-get install nodejs-legacy

этот пакет просто создает символическую ссылку на двоичные nodejs

Ответ 4

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

Например, если node живет в /usr/local/bin/ node, все, что вам нужно сделать, это изменить путь в вашей build_system следующим образом:

"path": "/usr/local/bin:$PATH"

Ответ 5

У меня была такая же проблема с Sublime Text 2. Создание этой возвышенной сборки работало для меня:

{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"  
}

Ответ 6

Следующий код работал у меня в Ubuntu 14.04:

**$ sudo apt-get install NodeJS-legacy** 

Другой проблемой были рамки проверки версий, например, например: gulp -v тот же код также решил эту проблему.

Ответ 7

Введите следующую команду в консоли:

sudo ln -s /usr/bin/nodejs /usr/bin/node