2016-03-25 22 views
9

Tôi có một tệp index.js có tên xuất sau được đặt tên trong đó.eslint ném lỗi phân tích cú pháp không mong muốn khi xuất tên là

export Main from './Main/Main' 

Tuy nhiên, eslint không thích điều này và ném lỗi

Parsing error: Unexpected token Main 

Tôi không chắc chắn lý do tại sao khi ứng dụng được hoạt động bình thường và tôi tin rằng đó là cú pháp hợp lệ.

tập tin .eslintrc của tôi trông như thế này

{ 
    env: { 
    es6: true, 
    browser: true 
    }, 
    parserOptions: { 
    ecmaVersion: 6, 
    sourceType: "module", 
    ecmaFeatures: { 
     jsx: true, 
     experimentalObjectRestSpread: true 
    } 
    }, 
    plugins: [ 
    "react", 
    ], 
    extends: ["eslint:recommended", "plugin:react/recommended", "standard"], 
    "rules": { 
    "comma-dangle" : [2, "always-multiline"], 
    "semi": [2, "never"], 
    "no-extra-semi": 2, 
    "jsx-quotes": [2, "prefer-single"], 
    "react/jsx-boolean-value": [2, "always"], 
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}], 
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}], 
    "react/jsx-max-props-per-line": [2, {maximum: 3}], 
    "react/jsx-no-literals": 2, 
    "react/sort-prop-types": 2, 
    "react/self-closing-comp": 2, 
    "react/sort-comp": 2 
    }, 
} 
+0

Đó không phải là cú pháp hợp lệ, như bạn có thể xác minh bằng cách nhìn vào spec: http: //www.ecma-international. org/ecma-262/6.0/index.html # table-42. Giải pháp chính xác là gì phụ thuộc vào những gì ''./Main/Main'' xuất khẩu và làm thế nào nó. –

+1

Đó là một đề xuất cú pháp, nhưng bạn sẽ phải kích hoạt nó. – loganfsmyth

+0

@ FelixKling Bạn nói đúng. Có ý tưởng từ đây https://github.com/erikras/react-redux-universal-hot-example/blob/master/src/components/index.js Cảm ơn những người đứng đầu! –

Trả lời

11

đặn nó ra. Đó là một tính năng thử nghiệm vì vậy tôi cần phải kích hoạt babel-eslint làm trình phân tích cú pháp eslint của tôi.

Bây giờ .eslintrc của tôi trông như thế này

{ 
    parser: "babel-eslint", 
    env: { 
    es6: true, 
    browser: true 
    }, 
    parserOptions: { 
    ecmaVersion: 6, 
    sourceType: "module", 
    ecmaFeatures: { 
     jsx: true, 
     experimentalObjectRestSpread: true 
    } 
    }, 
    plugins: [ 
    "react", 
    ], 
    extends: ["eslint:recommended", "plugin:react/recommended", "standard"], 
    "rules": { 
    "comma-dangle" : [2, "always-multiline"], 
    "semi": [2, "never"], 
    "no-extra-semi": 2, 
    "jsx-quotes": [2, "prefer-single"], 
    "react/jsx-boolean-value": [2, "always"], 
    "react/jsx-closing-bracket-location": [2, {selfClosing: "after-props", nonEmpty: "after-props"}], 
    "react/jsx-curly-spacing": [2, "never", {"allowMultiline": false}], 
    "react/jsx-max-props-per-line": [2, {maximum: 3}], 
    "react/jsx-no-literals": 2, 
    "react/sort-prop-types": 2, 
    "react/self-closing-comp": 2, 
    "react/sort-comp": 2 
    }, 
} 
+5

Nếu tính năng thử nghiệm đó là lý do duy nhất bạn cần babel-eslint và bạn không muốn đối phó với chi phí, bạn có thể sử dụng 'export {default as Main} từ './Main/Main';', đó là hợp lệ ES6 và sẽ hoạt động tốt trong trình phân tích cú pháp mặc định. – btmills

+0

@btmills Đó là một cái nhìn sâu sắc tuyệt vời. Cảm ơn bạn! –

+0

tuyệt vời, điều này đã sửa lỗi cho tôi, THANKS – xckpd7

0

kể từ khi tôi có những lỗi tương tự cho một lý do khác nhau, đây là nơi tôi đã đi sai:

Nếu bạn đang sử dụng babel với sự phát triển gói nguyên tử, babel được kích hoạt bởi use babel ở đầu mỗi tệp.

use babel, giống như use strict cần phải ở ngay phần đầu của tệp! Vì vậy, nhiều như một không gian ở phía trước của nó sẽ tắt nó, theo sau là động cơ js vấp trên báo cáo xuất khẩu của bạn hoặc, tương tự `` `xuất khẩu token bất ngờ````.

sai:

use babel import { bla } from 'blub'

Đúng:

use babel import { bla } from 'blub'

Các vấn đề liên quan