当我第一次玩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'错误......有人能帮我理解发生了什么吗?
答案 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键,它会自动为你添加空格