web-dev-qa-db-fra.com

Système de construction Node.js dans Sublime Text 2

Je viens de commencer à apprendre JavaScript. Ce faisant, je me suis fatigué d’incorporer mon code JavaScript dans un document HTML afin de l’exécuter dans le navigateur. Je pensais que ce serait bien de lancer mes scripts directement dans la console de Sublime, pour ne pas avoir à quitter l'éditeur. J'essayais donc de créer un système de compilation JavaScript, car Sublime n'en est pas fourni.

Mon idée était d'utiliser Node.js comme interpréteur JavaScript. Je l'ai installé avec le gestionnaire de paquets de Linux Mint. Autant que je puisse dire, cela fonctionne très bien. Disons que j'ai un fichier test.js contenant la ligne suivante de code JavaScript: 

console.log ("Hello World");

Quand je cours 

nodejs /path/to/test.js
dans ma console, je reçois: 
Bonjour le monde
Cependant, je ne comprends pas que cela fonctionne avec Sublime. J'ai créé un nouveau système de construction en cliquant sur Outils/Système de construction/Nouveau système de construction. J'ai ensuite tapé dans les lignes suivantes: 
{
 "cmd": ["nodejs", "$ file"] 
}
Pour autant que je sache, cette ligne correspond à la représentation JSON de la commande suivante: 
nodejs /path/to/current/file.ext
Comme je l'ai dit, si j'exécute ceci manuellement dans la console, cela fonctionne parfaitement. Si j'appuie sur F7 dans Sublime, qui est le raccourci pour Construire, La console de Sublime apparaît. C'est vide cependant.

Il y a une autre chose étrange. Même si la sortie (non existante) de la console de Sublime indique que le système de construction n'est pas configuré pour fonctionner correctement avec Node.js, des erreurs Node.js sont affichées lorsque j'ai accidentellement essayé d'exécuter des fichiers non-JS tels que le fichier. Node.sublime-build fichier. Voici le résultat affiché dans la console de Sublime: 

/home/baerenfaenger/.config/sublime-text-2/Packages/User/Node.sublime-build: 2 
 "cmd": ["nodejs", "$ file"] 
 ^

module.js: 434 var compiledWrapper = runInThisContext (wrapper, nom de fichier, true); ;__. ^ SyntaxError: Jeton inattendu: sur Module._compile (module.js: 434: 25) à Object..js (module.js: 464: 10) sur Module.load (module.js: 353: 32) à Function._load (module.js: 311: 12) sur Array.0 (module.js: 484: 10) at EventEmitter._tickCallback (node.js: 190: 39) [Terminé en 0.1s avec le code de sortie 1] </ pre> Alors, pourquoi ne pas obtenir de sortie lors de l'exécution du code JavaScript réel? Merci d'avance!

29
lambdarookie
{
    "cmd": ["node","$file"]
}

fonctionne parfaitement pour moi dans les fenêtres et il montre la sortie dans la fenêtre sublime. Bien que je ne sache pas comment arrêter le serveur après sublime, je dois rechercher et tuer le processus de noeud.

Aussi, vérifiez que le noeud est dans votre PATH;)

J'espère que ça marche pour toi.

43
garcianavalon

Utilisateurs Mac, tapez which node dans le terminal. Il sort le chemin de l'exécutable du noeud, qui dans la plupart des cas est /usr/local/bin/node. Créez maintenant un nouveau système de construction (Tools > Build System > New Build System) avec les paramètres suivants dans Sublime Text. 

{   
  "cmd": ["/usr/local/bin/node", "$file"],   
  "selector": "source.js"   
}
43
oozzal

Testé sur Ubuntu Linux. Utilisez un sélecteur de fichier comme ci-dessous:

{
  "cmd": ["node", "$file"],
  "selector": "*.js"
}
7
Luke W

Voici un conseil pour Windows,

La plupart des réponses de ce fil sont correctes mais aucune n'est complète et au moins aucune réponse n'indique comment tuer le processus de noeud existant, même si vous pouvez exécuter un noeud en sublime. Donc finalement, si l’une des approches ci-dessus a fonctionné pour vous, vous finirez toujours par tuer manuellement le nœud.

Voici ce que j'ai fait pour 'Windows':

  1. Ouvrez Sublime Text, allez dans "Outils" -> "Construire le système" -> "Nouveau système de construction"
  2. Ci-dessus ouvrira un nouveau fichier, y collera le contenu ci-dessous et l'enregistrera sous nodejs.xxx (utiliser l'extension par défaut): { "Cmd": ["c: /test.bat", "$ file" ] }
  3. Créez un fichier (c: /test.bat) et collez-y le contenu (deux lignes):

taskkill/F/IM "node.exe" "c:/Program Files/nodejs/node.exe"% 1

  1. Enregistrez-le, passez en texte sublime et sélectionnez "Outils" -> "Construire le système" -> "nodejs"
  2. ouvrez n’importe quel fichier Nodejs Exectuable et appuyez sur CTRL + B.
  3. Vous êtes prêt à partir. :)

Profitez de la tête.

4
Soman Dubey

La méthode n ° 2 du lien ci-dessous a résolu pour moi:

http://www.wikihow.com/Create-a-Javascript-Console-in-Sublime-Text

3
rsc

Cela me convient dans Windows7

1) Ouvrez Sublime Text, allez dans "Outils" -> "Construire le système" -> "Nouveau système de construction"

2) coller ce texte

{

"cmd": ["C:\\Program Files (x86)\\nodejs\\node","$file"]

}

\\ caractère échappé

3) Enregistrer sous Node.sublime-build

4) Écrivez un nouveau fichier js et appuyez sur CTRL + B pour générer.

Cliquez sur ici pour voir un exemple d'image.

2
Darth Pabor

Normalement

"cmd":["node",$file]

travaillerait. Cependant, il n’existe aucun moyen d’arrêter le serveur que . J'ai trouvé la meilleure solution pour ouvrir le serveur dans une nouvelle console et la fermer automatiquement . Je fonctionne également très bien avec les superviseurs ou les inspecteurs de nœuds.

"cmd" : ["start", "cmd.exe", "/C", "node", "$file"]

J'espère que ça va aider

1
Krzysztof Wende

Je ne peux voir la sortie de la console que si le fichier existe/est enregistré sur le disque. (pour les fichiers anonymes je ne vois pas la sortie non plus)

J'espère que cela t'aides 

1
phani

Si tout le reste échoue, cochez Node Supervisor ....... vous ne devez que changer le code et le serveur le redémarre automatiquement pour que vous puissiez voir les modifications en direct =)

0
Dactyllo

Peut-être cela dépend-il des variables d'environnement - essayez d'utiliser le chemin complet du nœud au lieu de "nodejs" . Cela a fonctionné pour moi sous Mac OS (par exemple,/usr/local/node au lieu d'un nœud)

0
kossoy

Sous Windows, la configuration suivante fonctionne:

{
    "cmd": ["C:\\Program Files\\nodejs\\node.exe", "$file"],
    "selector": "source.js"
}
0
henok_al