2016-11-29 44 views
3

我的javascript:ESLint:在「意外的標記」讓結果的一審錯誤

let foo = 'bar' 

爲什麼ESLint有以下回應?

~/index.js 
    1:5 error Parsing error: Unexpected token foo 

✖ 1 problem (1 error, 0 warnings) 

看起來無論腳本在哪裏,使用let設置變量的第一個實例都會得到這個錯誤。爲什麼??

我.eslintrc文件:

module.exports = { 
    "env": { 
     "node": true 
    }, 
    "extends": "eslint:recommended", 
    "rules": { 
     "indent": [ 
      "error", 
      "tab" 
     ], 
     "linebreak-style": [ 
      "error", 
      "unix" 
     ], 
     "quotes": [ 
      "error", 
      "single" 
     ], 
     "semi": [ 
      "error", 
      "never" 
     ] 
    } 
}; 

回答

9

關於let在全球範圍內被禁止的答案是錯誤的。沒關係。

問題是您需要讓eslint知道您正在使用es6功能。

做到這一點在你的配置添加"es6": true行至env塊:

.eslintrc.js

module.exports = { 
    "env": { 
     "node": true, 
     "es6": true 
    }, 
    "extends": "eslint:recommended", 
    "rules": { 
     "indent": [ 
      "error", 
      "tab" 
     ], 
     "linebreak-style": [ 
      "error", 
      "unix" 
     ], 
     "quotes": [ 
      "error", 
      "single" 
     ], 
     "semi": [ 
      "error", 
      "never" 
     ] 
    } 
}; 

這正好解決您的特定錯誤,但你很快就會看到有關錯誤未使用的名字。下面是最小的源代碼,我能找到,將通過您的eslint設置:

let.js

let foo = 'bar' 

function main() { 
    foo 
} 

main() 
+0

謝謝!我使用「eslint --init」創建了.eslintrc,並且我對es6使用的事實回答「是」,所以奇怪的是它沒有添加該行。 –

-2

與讓利聲明的變量不能訪問它們在各自的封閉塊聲明之前 - 這樣的第一個元素將是不確定的,直到閉合塊被擊中。如果你是在全局命名空間中定義foo,那麼在循環中使用let會導致這個錯誤。