index - Sistema de compilación CoffeeScript de Sublime Text: `env: node: No existe tal archivo o directorio`
coffeescript sublime text 3 (7)
Debería poder arreglar todo esto en su sistema de compilación sin necesidad de agregar un enlace simbólico en su máquina.
Por ejemplo, si el nodo vive en / usr / local / bin / node, todo lo que tiene que hacer es cambiar la ruta en su sistema de construcción para que sea:
"path": "/usr/local/bin:$PATH"
Estoy tratando de configurar un sistema de compilación CoffeeScript en Sublime Text 3, pero sigo recibiendo el siguiente error:
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]
Mi sistema de compilación se ve así:
{
"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"
}
Dos cosas extrañas sobre esto.
1) Dice que está buscando en /usr/bin
donde existe un enlace simbólico al coffee
.
2) Debido a (1), anulé $PATH
para incluir la ubicación real del coffee
que es /usr/local/lib/node_modules/coffee-script/bin
, pero por alguna razón, $PATH
no se anula correctamente. se está pegando con el $PATH
predeterminado.
Cosas a tener en cuenta:
i) He verificado que todas las rutas son correctas y pasan normalmente a través de un comando de terminal regular.
ii) Probado con un "shell": true
variable "shell": true
en el sistema de compilación.
iii) Tengo otro sistema de compilación para Compass como este que funciona bien.
¿Alguien se encuentra con problemas similares o problemas? ¿Algunas ideas?
El siguiente código me funcionó en Ubuntu 14.04:
**$ sudo apt-get install NodeJS-legacy**
El otro problema fue que los marcos de verificación de versión, como por ejemplo: gulp -v
el mismo código también resolvió este problema.
En Ubuntu puedes instalar el paquete nodejs-legacy.
sudo apt-get install nodejs-legacy
este paquete solo crea un enlace simbólico a binarios nodejs
En la Terminal, escriba which node
, luego cree un enlace simbólico a esa ubicación en /usr/bin
. Por ejemplo, si el node
vive en /usr/local/bin
, cree el enlace simbólico así:
sudo ln -s /usr/local/bin/node /usr/bin/node
Si observa la fuente de su script de coffee
, probablemente encontrará que la primera línea es algo así como:
#!/usr/bin/env node
El código de salida 127 en Sublime significa que un comando env
ha fallado, por lo que en su caso, el sistema de compilación encuentra coffee
, pero no puede ejecutarlo porque el binario del node
no se encuentra en la ruta de búsqueda predeterminada de Sublime.
Hay dos formas de redefinir la ruta de búsqueda predeterminada para Sublime. El primero (y el más fácil) es abrirlo siempre desde la línea de comandos utilizando el comando subl
incorporado. Si es un usuario avanzado de OS X y no le importa jugar con configuraciones importantes del sistema, consulte mi publicación en unix.SE sobre cómo modificar la ruta predeterminada /usr/bin:/bin:/usr/sbin:/sbin
path que estas viendo Tenga en cuenta que si no hace las cosas correctamente, puede romper su sistema. Sin embargo, si está ejecutando Mountain Lion (10.8.X) y sigue las instrucciones exactamente, todo debería estar bien. (No he actualizado a Mavericks, así que no hay garantías de que funcionará con esa versión).
Escribe lo siguiente en la consola:
sudo ln -s /usr/bin/nodejs /usr/bin/node
Tuve el mismo problema con Sublime Text 2. La creación de esta construcción sublime funcionó para mí:
{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"
}
Cómo resolver el problema bajo un sistema Ubuntu
El hecho es que el comando "coffee" llamará a / usr / bin / node para continuar con su trabajo, sin embargo, el comando original "node" para la aplicación de nodo en un sistema Ubuntu se cambia de "node" a "nodejs" para evitar el conflicto de nombres . Esa es la razón por la que el shell le cumplirá "/ usr / bin / env: node: no existe ese archivo o directorio". cada vez que escriba
$ coffee
Para resolver el error, simplemente deje que el shell encuentre algo llamado "nodo" en su ruta de búsqueda predeterminada, y este llamado "nodo" promoverá nodejs. El comando "nodejs" se encuentra en la ruta de / usr / bin / nodejs.
Usaremos el enlace del símbolo para vincular "nodo" con nodejs, y colocaremos el enlace "nodo" dentro de la ruta de búsqueda predeterminada, para que el shell lo encuentre.
sudo ln -s /usr/bin/nodejs /usr/bin/node
Pero tenga cuidado, asegúrese de que NO tiene otro comando de "nodo" en / usr / bin /, puede verificarlo intentando ejecutar
$ which node
NO sé qué hacer si ha instalado otra aplicación de "nodo".