diff --git a/crates/mako/src/generate/chunk_pot/util.rs b/crates/mako/src/generate/chunk_pot/util.rs index 11bf8148d..3fcb320df 100644 --- a/crates/mako/src/generate/chunk_pot/util.rs +++ b/crates/mako/src/generate/chunk_pot/util.rs @@ -102,7 +102,8 @@ pub(crate) fn runtime_code(context: &Arc) -> Result { umd, is_browser: matches!(context.config.platform, crate::config::Platform::Browser), cjs: context.config.cjs, - chunk_loading_global: context.config.output.chunk_loading_global.clone(), + chunk_loading_global: serde_json::to_string(&context.config.output.chunk_loading_global) + .unwrap(), cross_origin_loading: context .config .output diff --git a/crates/mako/templates/app_runtime.stpl b/crates/mako/templates/app_runtime.stpl index e3b00e912..002c0019c 100644 --- a/crates/mako/templates/app_runtime.stpl +++ b/crates/mako/templates/app_runtime.stpl @@ -377,7 +377,7 @@ function createRuntime(makoModules, entryModuleId, global) { installedChunks[id] = 0; } }; - var chunkLoadingGlobal = global['<%= chunk_loading_global.clone() %>'] = global['<%= chunk_loading_global.clone() %>'] || []; + var chunkLoadingGlobal = global[<%- chunk_loading_global.clone() %>] = global[<%- chunk_loading_global.clone() %>] || []; chunkLoadingGlobal.forEach(jsonpCallback.bind(null)); chunkLoadingGlobal.push = (function(push, data) { push(data); diff --git a/e2e/fixtures/config.output.chunk_loading_global/expect.js b/e2e/fixtures/config.output.chunk_loading_global/expect.js new file mode 100644 index 000000000..915eb4498 --- /dev/null +++ b/e2e/fixtures/config.output.chunk_loading_global/expect.js @@ -0,0 +1,16 @@ +const assert = require("assert"); +const { parseBuildResult, string2RegExp } = require("../../../scripts/test-utils"); +const { files } = parseBuildResult(__dirname); + +assert( + files['index.js'].includes(`global["foo' oo"]`), + "chunk loading should work in entry" +); + +assert( + files['src_a_ts-async.js'].includes( + `(typeof globalThis !== "undefined" ? globalThis : self)["foo' oo"]` + ), + "chunk loading should work in async chunk" +); + diff --git a/e2e/fixtures/config.output.chunk_loading_global/mako.config.json b/e2e/fixtures/config.output.chunk_loading_global/mako.config.json new file mode 100644 index 000000000..5b0117a5f --- /dev/null +++ b/e2e/fixtures/config.output.chunk_loading_global/mako.config.json @@ -0,0 +1,5 @@ +{ + "output": { + "chunkLoadingGlobal": "foo' oo" + } +} diff --git a/e2e/fixtures/config.output.chunk_loading_global/src/a.ts b/e2e/fixtures/config.output.chunk_loading_global/src/a.ts new file mode 100644 index 000000000..0ed5c3008 --- /dev/null +++ b/e2e/fixtures/config.output.chunk_loading_global/src/a.ts @@ -0,0 +1 @@ +export default 'a'; diff --git a/e2e/fixtures/config.output.chunk_loading_global/src/index.tsx b/e2e/fixtures/config.output.chunk_loading_global/src/index.tsx new file mode 100644 index 000000000..1cb36827c --- /dev/null +++ b/e2e/fixtures/config.output.chunk_loading_global/src/index.tsx @@ -0,0 +1,2 @@ +import('./a'); +console.log(1);