トム:
私は動的にインポートされたモジュール内で凍結されたオブジェクトをエクスポートしようとしている、それが失敗しています。
私の主なモジュールは以下のとおりです。
import ('./hello.mjs').then(function (o) {
o.hello();
});
私のインポートされたモジュール、hello.mjsは、このコードを持っています:
function hello () {
console.log('Hello');
}
export default Object.freeze({ hello });
このプログラムは、コンソールでこのエラーで失敗します。
TypeError: o.hello is not a function at main.mjs:2
しかし、私はこのような単純な輸出を、使用している場合:
function hello () {
console.log('Hello');
}
export { hello };
...それは動作します。デフォルトの凍結オブジェクトをエクスポートすると、非動的モジュールのインポートに対応しています。なぜ動的モジュール輸入は異なる挙動を示すか、と私はこれを修正するために何ができるのでしょうか?
TJクラウダー:
動的インポートからの約束の履行値であり、モジュールの名前空間オブジェクトモジュールの。(参照FinishDynamicImport。仕様では)プロパティを使用し、デフォルトのエクスポートにアクセスするにはdefault
、おそらく非構造を経由して、それに:
import ('./hello.mjs').then(function ({default: o}) {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^
o.hello();
});