私が理解している限り、ES6モジュールを作成すると、それ自体がモジュールであるコードからしかインポートできません。これは、非モジュールコード、つまりインラインJavaScript、またはChrome開発ツールコンソールがモジュール内のコードにアクセスできないことを意味します。
本当?これはかなり極端な制限のように見えるので、これを回避する方法はありますか?.
Chromeのコンソール内で 動的インポート を使用できます。
import('path/to/module.js').then(m => module = m)
// [doSomething] is an exported function from [module.js].
module.doSomething()
関数または変数をwindow.myFunction = myFunction
またはwindow.myVariable = myVariable
のような行でグローバル名前空間に登録できます。これは、myFunction
またはmyVariable
が宣言されているモジュールで行うか、インポートされた別のモジュールで行うことができます。
これを完了すると、Chrome DevToolsコンソールからmyFunction
およびmyVariable
を使用できるようになります。
例えば:
import myModule from '/path/to/module.js';
window.myModule = myModule;
// in the console:
myModule.foo();
(この解決策をコメントで提供してくれた@Evertにクレジットを送ってください。かなりわかりにくい方法でしたが、理解に時間がかかりました。)
import
はモジュール機能であるため、他のモジュールからのみモジュールをインポートできます。
ES6モジュールの前にどのように「インポート」しましたか?それは存在しなかったので、あなたはそうしませんでした。 E6モジュールと実際にやり取りできるのは、2つの独立した非モジュールスクリプト間でやり取りした場合と同じです。
モジュールファイルを押したままchrome dev consoleにドラッグします。
必ずコンソールの入力行セクション(>
の後)にドラッグしてください。
(これはmy Chrome 78 on Windows 10で動作します。)