簡體   English   中英

如何在動態導入中導出默認的 Object.freeze?

[英]How to export default Object.freeze in dynamic import?

我正在嘗試在動態導入的模塊中導出凍結的對象,但失敗了。

我的主要模塊是:

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 };

...然后它起作用了。 導出默認凍結對象適用於非動態模塊導入。 為什么動態模塊導入的行為不同,我該怎么做才能糾正這個問題?

來自動態導入的承諾的履行值是模塊的模塊命名空間對象 (請參閱規范中的FinishDynamicImport 。)要訪問默認導出,請在其上使用屬性default ,也許通過解構:

import ('./hello.mjs').then(function ({default: o}) {
// −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^
    o.hello();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM