Подтвердить что ты не робот

Неожиданный "INDENT" в примере кода CoffeeScript

Когда я впервые играл в CoffeeScript, я столкнулся с проблемой. Чтобы отладить мою проблему, я попытался заменить весь мой файл одним из примеров битов кода с сайта кофе script:

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

Однако, когда я пытаюсь скомпилировать этот код, я получаю:

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'

Поскольку это код с сайта CoffeeScript, я предполагаю, что сам код не является проблемой. Однако, похоже, компилятор работает правильно; если я скомпилирую:

a = 2

он создает файл с:

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

как ожидалось. Итак, другими словами, код хорош, компилятор хорош, и все же как-то я получаю эту Неожиданную ошибку IDENT... может ли кто-нибудь помочь мне понять, что происходит?

4b9b3361

Ответ 1

Я уверен, что это проблема с tabs-vs-spaces. Скажите, что ваш редактор не конвертирует пробелы в табы, если это так. Кроме того, пройдите через свой код с помощью курсора и убедитесь, что он не перескакивает через пустые области.

Проблема заключается в том, что, хотя обычные редакторы видят вкладку как эквивалентную двум или четырем пробелам, coffeescript видит это как одно пространство, поэтому отступы становятся беспорядочными.

Если это все не помогает, убедитесь, что у вас есть недавняя версия coffeescript, например. 1.1.0 или новее.

Ответ 2

Если вы используете среду JetBrains (IntelliJ, PHPStorm и т.д.), изменение настройки, которая сработала для меня, это:

Файл > Настройки > Настройки проектa > Стиль кодa > CoffeeScript > Вкладки и отступы

Отметьте "Использовать символ вкладки" и "Интеллектуальные вкладки"

Ответ 3

Код в порядке. Удостоверьтесь, что вы не испортили пробелы (странные контрольные символы, показывающие пробелы, вкладки или подобные).

Ответ 4

Если у вас такая же проблема, но ваш отступ в порядке,
то вы должны страдать от ошибка 2868.

В принципе, ошибка вводит в заблуждение. Проверка отступов
ошибки в файлах require d.

Ответ 5

Когда в Atom вы можете автоматически конвертировать вкладки в пробелы:

Packages > Whitespace > Convert Tabs to Spaces

Ответ 6

Вы можете решить эти два пути 1. ЕСЛИ используется webstorm File- > Настройки по умолчанию, как указано выше 2. Другим обходным путем является использование другого редактора, такого как Sublime, и вы можете нажать клавишу ввода на более ранней строке, и он автоматически разместит его для вас с пробелами.