2 votes

Comment puis-je analyser les messages d'erreur de TypeScript dans Sublime Text 2 ?

Je suis en train de configurer un système de compilation Sublime Text 2 pour TypeScript. J'ai suivi les instructions que j'ai trouvées ici. En fait, l'appel au compilateur fonctionne, mais il ne parvient pas à récupérer correctement les messages d'erreur.

Voici mon programme TypeScript d'exemple :

function greeter(person: string) {
     return "Bonjour, " + person;
}
var user = "Jane User";
document.body.innerHTML = greeter(us-er);

Lorsque je compile à partir de la ligne de commande, je vois la sortie suivante :

C:/data/helloworld.ts(5,34): Le nom 'us' n'existe pas dans le contexte actuel C:/data/helloworld.ts(5,37): Le nom 'er' n'existe pas dans le contexte actuel C:/data/helloworld.ts(5,26): Les paramètres fournis ne correspondent à aucune signature cible d'appel

Lorsque je construis à partir de Sublime Text 2, je vois la sortie suivante :

C:/Data/helloworld.ts(5,34): [Terminé en 0.6s]

J'ai essayé différentes variations du file_regex, comme mentionné dans la question d'origine, avec le même résultat. Ma version actuelle du fichier ressemble à ceci :

{
    "selector": "source.ts",
    "cmd": ["tsc.cmd", "--target","ES5", "$file"],
    "file_regex": "^(.+?)\\(([0-9]+,[0-9]+)\\)\\: (.+)$"
}

Lorsque je teste l'expression régulière en utilisant l'outil Python Regex Tool, cette version correspond correctement aux 3 parties. Cependant, Sublime Text refuse de me montrer le message d'erreur réel.

Est-ce que quelqu'un pourrait me dire ce que je fais de mal ?

C'est très frustrant, d'autant plus que le site montre même un exemple de Sublime Text affichant correctement le message d'erreur.

Cela se produit avec Sublime Text 2.01 64-bit sur Windows 7 64-bit.

1voto

Markus Jarderot Points 33893

Il semble que le processus soit terminé avant que le tampon de sortie soit vidé. Vous pouvez vérifier cela avec:

{
    "selector": "source.ts",
    "cmd": ["tsc.cmd", "--target","ES5", "$file"],
    "file_regex": "(.*)"
}

Vous devriez toujours obtenir quelque chose comme

C:/Data/helloworld.ts(5,34): [Terminé en 0.6s]

Pour résoudre ce problème, vous pourriez essayer d'ajouter un délai dans le fichier batch tsc.cmd:

@echo off
:: Exécute le compilateur
node "C:\typescript\tsc.js" %*

:: Attend 500ms
ping 1.1.1.1 -n 1 -w 500

EDIT: Voir le commentaire de Markus sur l'utilisation de Windows Script Host au lieu de node. Cela résout le problème. Des recherches ultérieures suggèrent que c'est en fait un problème connu avec node sur Windows: voir ici et ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X