web-dev-qa-db-fra.com

'INDENT' inattendu dans l'exemple de code CoffeeScript

Alors que je jouais pour la première fois avec CoffeeScript, j'ai rencontré un problème. Afin de résoudre le problème, j'ai essayé de remplacer tout mon fichier par l'un des exemples de bits de code du site de script Coffee:

kids =
  brother:
    name: "Max"
    age:  11
  sister:
    name: "Ida"
    age:  9

Cependant, lorsque j'essaie de compiler ce code, je reçois:

Error: In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT'
    at Object.parseError (/usr/lib/coffeescript/parser.js:501:11)
    at Object.parse (/usr/lib/coffeescript/parser.js:573:32)
    at Object.compile (/usr/lib/coffeescript/coffee-script.js:23:22)
    at /usr/lib/coffeescript/command.js:99:27
    at /usr/lib/coffeescript/command.js:72:28
    at fs:84:13
    at node.js:773:9
In coffee/main.coffee, Parse error on line 3: Unexpected 'INDENT'

Comme il s'agit du code du site CoffeeScript, je suppose que le code lui-même n'est pas le problème Cependant, le compilateur semble également fonctionner correctement; si je compile:

a = 2

il génère un fichier avec:

(function(){
  var a;
  a = 2;
})();

comme prévu. Donc, en d'autres termes, le code est bon, le compilateur est bon, et pourtant je reçois cette erreur inattendue "IDENT" ... quelqu'un peut-il m'aider à comprendre ce qui se passe?

25
machineghost

Je suis à peu près sûr que c'est un problème tabs-vs-spaces. Dites à votre éditeur de ne pas convertir les espaces en onglets s'il le fait. En outre, parcourez votre code avec le curseur et assurez-vous qu'il ne saute pas par-dessus les zones vides.

Le problème est que, bien que les éditeurs normaux considèrent un onglet comme équivalent à deux ou quatre espaces, Coffeescript le considère comme un seul espace, de sorte que l'indentation est altérée.

Si cela ne vous aide pas, assurez-vous de disposer d'une version récente de Coffeescript, par exemple. 1.1.0 ou plus récent.

65
thejh

Si vous utilisez un JetBrains IDE (IntelliJ, PHPStorm, etc.), le changement de paramètre qui a fonctionné pour moi est le suivant:

Fichier> Paramètres> Paramètres de projet> Style de code> CoffeeScript> Onglets et retraits

Cochez "Utiliser le caractère de tabulation" et "Onglets intelligents"

9
eaykin

Le code est bien. Assurez-vous de ne pas avoir gâché les espaces (des caractères de contrôle étranges apparaissent sous la forme de blancs, de tabulations ou similaires).

4
Marius Kjeldahl

Si vous avez le même problème, mais que votre retrait est correct,
alors vous devez souffrir de bug 2868 .

Fondamentalement, l'erreur est trompeuse. Vérifier l'indentation
errors dans les fichiers required.

0
Alba Mendez

Une fois dans Atom, vous pouvez convertir automatiquement les onglets en espaces:

Packages > Whitespace > Convert Tabs to Spaces

0
loretoparisi