根據檔案,可以這樣做:
let myModule;
if (typeof window === "undefined") {
myModule = await import("module-used-on-server");
} else {
myModule = await import("module-used-in-browser");
}
但嘗試使用此模塊匯出(myClass.js):
export class MyClass {
constructor(){
console.log('MyClass Constructed');
}
}
這段代碼(從回呼呼叫的window.initialize())在控制臺(Chrome)中給了我一個“ MyClass is not a constructor ”錯誤:
let MyClass;
window.initialize = async () => {
MyClass = await import('../modules/myClass.js');
let myClassInstance = new MyClass();
}
這段代碼雖然有效:
window.initialize = async () => {
let { MyClass } = await import('../modules/myClass.js');
let myClassInstance = new MyClass();
}
那么如何使類建構式在函式范圍之外可用?
謝謝 ;)
這會起作用,但“感覺不對”:
let newMyClass = null;
window.initialize = async () => {
let { MyClass } = await import('../modules/myClass.js');
newMyClass = () => { return new MyClass(); }
let myClassInstance = new newMyClass();
}
uj5u.com熱心網友回復:
那是因為您正在像這樣匯出您的課程:
export class MyClass {
^^^^^^
這相當于:
class MyClass { ... }
export { MyClass }
這就是為什么import在不需要使用解構的情況下不回傳它的原因。我相信您可以改用這種方法
let MyClass
window.initialize = async () => {
let myClassImport = await import('../modules/myClass.js');
MyClass = myClassImport.MyClass
let myClassInstance = new MyClass();
}
或者像這樣簡單地將此類添加到全域視窗范圍
window.initialize = async () => {
let myClassImport = await import('../modules/myClass.js');
window.MyClass = myClassImport.MyClass;
let myClassInstance = new MyClass();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/505609.html
標籤:javascript 导入错误 es6-模块
