From bb8d852f484c2ab7cef60760c727ac5cc165260c Mon Sep 17 00:00:00 2001 From: fireairforce <1344492820@qq.com> Date: Mon, 27 Apr 2026 13:03:49 +0800 Subject: [PATCH] fix(turbopack): compitable script external --- Cargo.lock | 38 ++++++++++--------- .../src/browser/runtime/base/runtime-base.ts | 4 +- .../src/references/external_module.rs | 5 +++ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e08e57226e8..a6c252414d8c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3788,17 +3788,6 @@ version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06432fb54d3be7964ecd3649233cddf80db2832f47fec34c01f65b3d9d774983" -[[package]] -name = "io-uring" -version = "0.7.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd7bddefd0a8833b88a4b68f90dae22c7450d11b354198baee3874fd811b344" -dependencies = [ - "bitflags 2.9.1", - "cfg-if", - "libc", -] - [[package]] name = "ipnet" version = "2.10.1" @@ -4142,8 +4131,7 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libmimalloc-sys" version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870" +source = "git+https://github.com/utooland/mimalloc_rust.git#43eea63be488f068f0f1a31c07553fe262d34255" dependencies = [ "cc", "cty", @@ -4505,8 +4493,7 @@ dependencies = [ [[package]] name = "mimalloc" version = "0.1.48" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8" +source = "git+https://github.com/utooland/mimalloc_rust.git#43eea63be488f068f0f1a31c07553fe262d34255" dependencies = [ "libmimalloc-sys", ] @@ -11932,6 +11919,7 @@ dependencies = [ [[package]] name = "wasmprinter" version = "0.239.0" +source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3981f3d51f39f24f5fc90f93049a90f08dbbca8deba602cd46bb8ca67a94718" dependencies = [ "anyhow", @@ -12126,6 +12114,20 @@ dependencies = [ "winch-codegen", ] +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "wast" version = "35.0.2" @@ -12133,9 +12135,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" dependencies = [ "leb128", -======= -name = "wasmtimer" -version = "0.4.3" +] + +[[package]] name = "wast" version = "235.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/turbopack/crates/turbopack-ecmascript-runtime/js/src/browser/runtime/base/runtime-base.ts b/turbopack/crates/turbopack-ecmascript-runtime/js/src/browser/runtime/base/runtime-base.ts index f2068344db4b..f16d62bc11b8 100644 --- a/turbopack/crates/turbopack-ecmascript-runtime/js/src/browser/runtime/base/runtime-base.ts +++ b/turbopack/crates/turbopack-ecmascript-runtime/js/src/browser/runtime/base/runtime-base.ts @@ -225,9 +225,7 @@ function loadScript( promise = new Promise((resolve, reject) => { const script = document.createElement('script') - if (CROSS_ORIGIN_LOADING) { - script.crossOrigin = CROSS_ORIGIN_LOADING - } + script.crossOrigin = CROSS_ORIGIN script.src = scriptUrl script.onload = () => resolve() script.onerror = () => diff --git a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs index 5feada09a8cd..609c72d81bf6 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs @@ -281,6 +281,11 @@ impl CachedExternalModule { || self.external_type == CachedExternalType::EcmaScriptViaRequire { writeln!(code, "{TURBOPACK_EXPORT_NAMESPACE}(mod);")?; + } else if self.external_type == CachedExternalType::Script { + writeln!(code, "var ns = Object.create(null);")?; + writeln!(code, "for (var key in mod) ns[key] = mod[key];")?; + writeln!(code, "ns.default = mod;")?; + writeln!(code, "{TURBOPACK_EXPORT_NAMESPACE}(ns);")?; } else { writeln!(code, "{TURBOPACK_EXPORT_VALUE}(mod);")?; }