Неожиданный "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... может ли кто-нибудь помочь мне понять, что происходит?
Ответы
Ответ 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, и вы можете нажать клавишу ввода на более ранней строке, и он автоматически разместит его для вас с пробелами.