CoffeeScript示例代码中出现意外的'INDENT'

时间:2011-11-19 21:23:43

标签: coffeescript

当我第一次玩CoffeeScript时,我遇到了一个问题。为了调试我的问题,我尝试用咖啡脚本站点中的一个示例代码替换我的整个文件:

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'错误......有人能帮我理解发生了什么吗?

6 个答案:

答案 0 :(得分:65)

我很确定这是一个制表符与空格的问题。如果是这样,请告诉编辑不要将空格转换为制表符。另外,使用光标检查代码并确保它不会跳过空白区域。

问题是普通编辑看到一个标签相当于两个或四个空格,coffeescript将其视为一个空格,因此缩进变得混乱。

如果这一切都没有帮助,请确保您有最新的咖啡因版本,例如: 1.1.0或更新。

答案 1 :(得分:9)

如果您使用的是JetBrains IDE(IntelliJ,PHPStorm等),那么对我有用的设置更改是:

  

档案>设置>项目设置>代码风格> CoffeeScript>标签   和缩进

勾选“使用标签字符”& “智能标签”

答案 2 :(得分:4)

代码很好。确保你没有弄乱空白(显示为空格,制表符或类似字符的奇怪控件字符)。

答案 3 :(得分:0)

如果你有同样的问题,但你的缩进是可以的,
然后你必须患bug 2868

基本上,错误是误导性的。检查压痕
require d档中的错误

答案 4 :(得分:0)

在Atom中,您可以自动将标签转换为空格:

Packages > Whitespace > Convert Tabs to Spaces

答案 5 :(得分:-1)

您可以通过以下两种方式解决问题 1.如果使用webstorm文件 - >默认设置,如上所述 2.其他解决方法是使用不同的编辑器,如Sublime,你可以在早期行按Enter键,它会自动为你添加空格