2017-02-04 3 views
-1

aliases.jsに、インポートされたactionTypesオブジェクトから 'SELECT_HOST'プロパティ値にアクセスしようとしています。ただし、これによりWebpackごとに「SyntaxError:予期しないトークンが予期しない」というエラーが発生します。私はオブジェクトのプロパティの値にアクセスする標準のドット表記法であるactionTypes.SELECT_HOSTの構文エラーが何かを特定することができません。javascriptオブジェクトの値にアクセスしようとすると、 "SyntaxError:予期しないトークンです"

actionTypes.js:

const actionTypes = { 
    SELECT_HOST : 'SELECT_HOST', 
    INVOKE_ASSESSMENT : 'INVOKE_ASSESSMENT', 
    RETRIEVE_ASSESSMENT : 'RETRIEVE_ASSESSMENT', 
    RETRIEVE_OPTIONS : 'RETRIEVE_OPTIONS', 
    RETRIEVE_RESULTS : 'RETRIEVE_RESULTS', 
    UPDATE_OPTIONS : 'UPDATE_OPTIONS' 
}; 

export default actionTypes; 

aliases.js:WebPACKのエラースロー

import actionTypes from '../actions/actionTypes'; 

const selectHost = (host) => { 
    chrome.tabs.query({currentWindow: true, active: true}, (tabs) => { 
     host = new URL(tabs[0].url).hostname; 
    }); 
    const action = { 
     type: actionTypes.SELECT_HOST, 
     host 
    }; 
    return action; 
}; 

export default { 
    actionTypes.SELECT_HOST: selectHost 
}; 

:(。)

ERROR in ./src/aliases/aliases.js 
Module build failed: SyntaxError: Unexpected token, expected ,  (15:12) 

    13 | 
    14 | export default { 
> 15 | actionTypes.SELECT_HOST: selectHost 
    |   ^
    16 | }; 
+0

私は 'out = {};を定義する必要があるかもしれないと信じています。 out [actionTypes.SELECT_HOST] = selectHost;エクスポートのデフォルトアウト; '... –

+0

@NiettheDarkAbsol:OP2015 +の2ステップは必要ありません。 –

+0

'actionTypes.SELECT_HOST'で何をしようとしていますか?はい、これは完全に通常のプロパティアクセス式ですが、その場合はプロパティアクセス式が無効です(したがってエラーです)。 –

答えて

3

の値actionTypes.SELECT_HOSTとして、エクスポートするオブジェクトのプロパティ名として使用します。計算されたプロパティの表記法を使用してこれを行うことができます(ES2015では新規ですが、使用する他の多くのものも同様です)。 actionTypes.SELECT_HOSTselectHostの値だったfooという名前のプロパティを持つオブジェクトを生成する文字列"foo"を、含まれている場合、例えば

export default { 
    [actionTypes.SELECT_HOST]: selectHost 
}; 

:...)、[]に注意してください。

+1

本当にうまくいった!はい、私はES2015を使用しています(それを包括的に学習する過程にありますが)ので、毎日新しいことを学ぶことができます。 – Agrim

+0

"古い"バージョンのベアワードの問題に対する興味深い回避策 –

1

オブジェクト内のリテラルを、キー名はドットを含めることはできません

関連する問題