私が初めてCoffeeScriptをいじっていたときに、問題が発生しました。私の問題をデバッグするために、ファイル全体をコーヒースクリプトサイトのコード例の1つに置き換えてみました。
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」エラーが発生しています...
これはタブとスペースの問題だと私は確信しています。スペースをタブに変換しないようにエディタに指示してください。また、カーソルでコードを確認し、空白の領域を飛び越えないようにしてください。
問題は、通常のエディターではタブが2つまたは4つのスペースに相当すると見なされますが、coffeescriptでは1つのスペースと見なされるため、インデントがめちゃくちゃになることです。
これでも問題が解決しない場合は、コーヒースクリプトの最新バージョンを使用していることを確認してください。 1.1.0以降。
JetBrains IDE(IntelliJ、PHPStormなど))を使用している場合、私にとって有効だった設定の変更は次のとおりです。
ファイル>設定>プロジェクト設定>コードスタイル> CoffeeScript>タブとインデント
「タブ文字を使用」と「スマートタブ」にチェックを入れます
コードは結構です。空白を間違えていないことを確認してください(奇妙な制御文字が空白、タブなどとして表示されています)。
同じ問題があるが、インデントは問題ない場合、
そして、あなたは バグ2868 に苦しんでいるに違いありません。
基本的に、エラーは誤解を招くものです。インデントを確認するrequire
dファイルのエラー。
Atomの場合、タブをスペースに自動的に変換できます:
Packages > Whitespace > Convert Tabs to Spaces