2017-11-08 2 views
1

systemjsが私がインストールしたカスタムライブラリを見つけられなかったのを解決しようとしている間に(私は後から質問されるかもしれません)、 "手動で"しようとすると止まってしまいました。"import"予期しないトークンですか? (chrome 62)

だから私は3つのファイルで構成され、単純なシステムを持っている:

  • index.htmlを
  • hi.js
  • hi2.js

インデックスはちょうどです:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Test</title> 
</head> 

<body> 
<script src="hi.js"></script> 
</body> 
</html> 

hi.js:

import * as hi from "hi2.js"; 

hi.myFunction(); 

hi2.js: 「キャッチされないでSyntaxError:私は上記のコード(webstormとクロム62を使用して)実行すると

function myFunction() { 
    alert('hi') 
} 
export { myFunction }; 

は今、私は(クローム)デバッガによって報告された、次のエラーを取得します:予期しないトークンのインポート "

ここには何が起こっていますか?私はjavacriptの準拠on mdnを確認し、インポートがクロム61以上でサポートされていることを伝えます。 - 私はこれをテストするためにクロム62を使用します。

何が起こっているのか、どうやって動作させるのですか?

recomendationまた、html行を<script type="module" src="hi.js"></script>に変更しました。それはまったく役に立たなかった、同じエラー。

+1

予期しないトークンエラーの代わりに 'type =" module "を追加したときに、' Uncaught TypeError:モジュール指定子 'hi2.js'を解決できませんでした。 (私はChrome 62でやりました) –

+1

ここにあなたのファイルを含むplnkrがあります。私は '。/'を追加するように修正した後、Chrome 61でこれが動作することを確認しました。 – JLRishe

+1

@ T.J.Crowder:確かに、私は十分に深く進まず、デバッグモードで「モジュール」を実行せず、エラーが同じだったと思って、動作していないことを見ました。受け入れる前に待つ必要があります。 – paul23

答えて

5

あなたなら、あなたのスクリプトタグにtype="module"が必要であることを正しい:これは

import * as hi from "./hi2.js"; 
// ------------------^^ 

がためのオープンドアを残して:あなたは、あなたのモジュール指定子に./プレフィックスを必要とする

<script src="hi.js" type="module"></script> 
<!-- ---------------^^^^^^^^^^^^^  --> 

物が進化するにつれて、ある段階では特別な意味を持つために道が全くない指示子。 the WHAT-WG specから:

This restriction (that a relative URL specifier must start with / , ./ , or ../  – T.J.) is in place so that in the future we can allow custom module loaders to give special meaning to "bare" import specifiers, like import "jquery" or import "web/crypto" . For now any such imports will fail, instead of being treated as relative URLs.

私が設定されていない実験的なフラグを使ってChrome 62を使用してファイルにこれら2つの変更を、作るとき、私は警告を取得します。

関連する問題