J'essaie de mettre en place un système de construction CoffeeScript dans Sublime Text 3, mais je reçois toujours l'erreur suivante:
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]
Mon système de construction ressemble à ceci:
{
"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"
}
Deux choses étranges à ce sujet.
1) Il indique qu'il cherche dans /usr/bin
où existe un lien symbolique vers coffee
.
2) En raison de (1), j'ai outrepassé $PATH
pour inclure l'emplacement réel de coffee
qui est /usr/local/lib/node_modules/coffee-script/bin
, mais pour une raison quelconque, $PATH
n'est pas remplacé correctement, il s'en tient à la valeur par défaut $PATH
.
A noter:
i) J'ai vérifié que tous les chemins sont corrects et passent normalement par une commande de terminal standard.
ii) Jugé avec un "Shell": true
variable dans le système de construction.
iii) J'ai un autre système de construction pour Compass comme celui-ci qui fonctionne bien.
Quelqu'un a-t-il rencontré des problèmes ou des problèmes similaires? Des idées?
Dans Terminal, saisissez which node
, puis créez un lien symbolique vers cet emplacement dans /usr/bin
. Par exemple, si node
vit dans /usr/local/bin
, créez le lien symbolique comme ceci:
Sudo ln -s /usr/local/bin/node /usr/bin/node
Si vous regardez la source de votre script coffee
, vous constaterez probablement que la première ligne est quelque chose comme:
#!/usr/bin/env node
Le code de sortie 127 dans Sublime signifie qu'une commande env
a échoué - donc dans votre cas, le système de construction trouve coffee
, mais il ne peut pas l'exécuter car la node
binaire n'est pas dans le chemin de recherche par défaut de Sublime.
Il existe deux façons de redéfinir le chemin de recherche par défaut pour Sublime. La première (et la plus simple) consiste à toujours l'ouvrir à partir de la ligne de commande à l'aide de la commande intégrée subl
. Si vous êtes un utilisateur avancé d'OS X et que cela ne vous dérange pas de jouer avec des paramètres système importants, consultez mon article sur unix.SE pour savoir comment modifier la valeur par défaut /usr/bin:/bin:/usr/sbin:/sbin
chemin que vous voyez. Sachez que si vous ne faites pas les choses correctement, vous risquez de casser votre système. Cependant, si vous utilisez Mountain Lion (10.8.X) et que vous suivez exactement les instructions, tout devrait bien se passer. (Je n'ai pas mis à niveau vers Mavericks, donc aucune garantie quant à savoir si cela fonctionnera avec cette version.)
Comment résoudre le problème sous un système Ubunt
Le fait est que la commande "coffee" appellera/usr/bin/node pour continuer son travail, cependant, la commande "node" d'origine pour l'application de nœud sur un système Ubuntu est changée de "node" à "nodejs" pour éviter les conflits de noms . C'est la raison pour laquelle le Shell vous respectera "/ usr/bin/env: node: Aucun fichier ou répertoire de ce type". chaque fois que vous tapez
$ coffee
Pour résoudre le bogue, laissez simplement le Shell trouver quelque chose nommé "node" dans son chemin de recherche par défaut, et ce soi-disant "node" promouvra nodejs. La commande "nodejs" se trouve sous le chemin de/usr/bin/nodejs.
Nous utiliserons le lien de symbole pour lier "nœud" avec nodejs, et placerons le lien "nœud" dans le chemin de recherche par défaut, afin que le shell le trouve.
Sudo ln -s /usr/bin/nodejs /usr/bin/node
Mais attention, assurez-vous que vous n'avez PAS une autre commande "node" sous/usr/bin /, vous pouvez le vérifier en essayant d'exécuter
$ which node
Je ne sais pas quoi faire si vous avez installé une autre application "nœud".
Dans Ubuntu, vous pouvez installer le package nodejs-legacy
Sudo apt-get install nodejs-legacy
ce package crée simplement un lien symbolique vers nodejs binaire
Vous devriez pouvoir résoudre tout cela dans votre système de construction sans avoir besoin d'ajouter un lien symbolique sur votre machine.
Par exemple, si le nœud réside dans/usr/local/bin/node, tout ce que vous avez à faire est de changer le chemin dans votre build_system pour qu'il soit:
"path": "/usr/local/bin:$PATH"
Le code suivant a fonctionné pour moi dans Ubuntu 14.04:
**$ Sudo apt-get install NodeJS-legacy**
L'autre problème était les frameworks de vérification de version tels que par exemple: gulp -v
le même code a également résolu ce problème.
J'ai eu le même problème avec Sublime Text 2. La création de cette construction sublime a fonctionné pour moi:
{
"cmd": ["coffee", "-c", "$file"],
"selector" : "source.coffee",
"path" : "/usr/local/lib/node_modules/coffee-script/bin/:/usr/local/bin:$PATH"
}
Tapez le suivant dans la console:
Sudo ln -s /usr/bin/nodejs /usr/bin/node