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

mac*_*ost 25 coffeescript

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

kids =
  brother:
    name: "Max"
    age:  11
  sister:
    name: "Ida"
    age:  9
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编译该代码时,我得到:

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'
Run Code Online (Sandbox Code Playgroud)

由于这是来自CoffeeScript网站的代码,我认为代码本身不是问题.但是,编译器似乎也正常工作; 如果我编译:

a = 2
Run Code Online (Sandbox Code Playgroud)

它生成一个文件:

(function(){
  var a;
  a = 2;
})();
Run Code Online (Sandbox Code Playgroud)

正如所料.所以换句话说,代码很好,编译器很好,但不知怎的,我得到了这个意外的'IDENT'错误......任何人都可以帮我理解发生了什么?

the*_*ejh 67

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

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

如果这一切都没有帮助,请确保您有最新的coffeescript版本,例如1.1.0或更新版本.

  • 我已经三次检查了我的空白(使用Eclipse的显示空白字符功能),并用空格和制表符重新完成它们; 我仍然得到同样的错误.至于有一个新的coffeescript,我得到了Ubuntu包中的任何版本...看起来像...... 0.7.0!这可能是我的问题,让我尝试手动安装咖啡,看看是否有帮助. (2认同)

eay*_*kin 9

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

文件>设置>项目设置>代码样式> CoffeeScript>选项卡和缩进

勾选"使用标签字符"和"智能标签"