2016-02-11 20 views
9

ES6で輸出入を使用して、私はエラーの下に取得しています:ES2015モジュールのインポートおよびエクスポート構文エラー

SyntaxError: export declarations may only appear at top level

私はこの問題を解決する方法を見つけるために、サーフィン、それにイムができません。誰もがこれについて説明することができます。 ES6の新機能、特にインポートとエクスポート。 (私はこの種のもののためにStealJSを完全に使用していました) ありがとう!

JSファイルは、次のとおりです。

app.js

import { cube, cubeRoot } from 'functions'; 

console.log(cube(4)); 
console.log(cubeRoot(125)); 

functions.js

// functions.js 

function cube(a) { 
    return a * a * a; 
} 

function cubeRoot(a) { 
    return Math.cbrt(a); 
} 

export { cube, cubeRoot} 
+3

'functions'はファイルまたはモジュールですか?たぶんあなたは '。/ function''から' import {...}が必要でしょうか? –

+0

あなたはどこかの迷いのないオープニングブレースを持っていませんか?これはあなたの正確なコードですか?あなたは私たちに正確なセットアップと、これを蒸散させる方法を教えてくれますか? – Bergi

+0

これはエラーメッセージ全体ですか?任意の行番号などがありますか? – Bergi

答えて

5

更新夏2017:

http://caniuse.com/#search=modulesを参照してください、新しいサポート、多分変更する必要があります設定。

ここでは物事はあまり曖昧です。モジュールを動作させるには、にモジュール(他のスクリプト)であることをブラウザに伝える必要があります。最初の方法は暗黙的です。インポートされたモジュールは常にモジュールです。型モジュール<script src="anymodule.js" type="module"></script>

であるインポートおよびエクスポートは、トップレベルではなく、ブロック内ではなく、if文の内部ではなく、ループの中だけであることを確認してください、など

第二の方法はまた、確認してくださいにフルパス(.jsを含む)を指定する場合は、./または../で始まる必要があります。ファイルが同じフォルダにあると仮定すると、モジュール文字列上のimport { cube, cubeRoot } from './functions.js';

evalは機能しません。以下

古い答え:

ES2015モジュールのインポートおよびエクスポートの構文は、私はこの答え(04/2016)を書く時に任意のブラウザでサポートされていません。このエラーメッセージは、構文がサポートされていることを意味するため、間違っていますが、サポートされていません。最初の注記を参照してくださいhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

理由は、モジュールローダーの仕様がまだ進行中であるためです。 https://whatwg.github.io/loader/#status

これらのツールはpolyfillにするか、自動的にこの構文をバベルのように透明化するためのツールです。

+0

ブラウザで不足しているモジュールの機能は、OPレポートのエラーメッセージが発生しないでしょう。 –

+0

エラーが本当に逃している –

+2

私は、ブラウザがモジュールをサポートしていないと、そのメッセージをまったく生成しないと言っています。 '予期しないトークンのインポート 'などのメッセージを生成します。したがって、OPの問題は他の場所にあります。 –

関連する問題