web-dev-qa-db-ja.com

CoffeeScriptサンプルコードでの予期しない「INDENT」

私が初めて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」エラーが発生しています...

25
machineghost

これはタブとスペースの問題だと私は確信しています。スペースをタブに変換しないようにエディタに指示してください。また、カーソルでコードを確認し、空白の領域を飛び越えないようにしてください。

問題は、通常のエディターではタブが2つまたは4つのスペースに相当すると見なされますが、coffeescriptでは1つのスペースと見なされるため、インデントがめちゃくちゃになることです。

これでも問題が解決しない場合は、コーヒースクリプトの最新バージョンを使用していることを確認してください。 1.1.0以降。

69
thejh

JetBrains IDE(IntelliJ、PHPStormなど))を使用している場合、私にとって有効だった設定の変更は次のとおりです。

ファイル>設定>プロジェクト設定>コードスタイル> CoffeeScript>タブとインデント

「タブ文字を使用」と「スマートタブ」にチェックを入れます

9
eaykin

コードは結構です。空白を間違えていないことを確認してください(奇妙な制御文字が空白、タブなどとして表示されています)。

4
Marius Kjeldahl

同じ問題があるが、インデントは問題ない場合、
そして、あなたは バグ2868 に苦しんでいるに違いありません。

基本的に、エラーは誤解を招くものです。インデントを確認する
requiredファイルのエラー。

0
Alba Mendez

Atomの場合、タブをスペースに自動的に変換できます:

Packages > Whitespace > Convert Tabs to Spaces

0
loretoparisi