web-dev-qa-db-fra.com

Système de construction Sublime Text CoffeeScript: `env: node: aucun fichier ou répertoire de ce type`

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?

42
CourtDemone

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.)

96
MattDMo

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".

30
Storm-Eyes

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

24
wnasich

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"
2
Craig

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.

1
Raphael Viana

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"  
}
1
caulitomaz

Tapez le suivant dans la console:

Sudo ln -s /usr/bin/nodejs /usr/bin/node
1
MaicolBen