diff --git a/.changeset/empty-dryers-applaud.md b/.changeset/empty-dryers-applaud.md new file mode 100644 index 000000000000..12648fde9baf --- /dev/null +++ b/.changeset/empty-dryers-applaud.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +[fix] check for private var usage in client code instead of server code diff --git a/packages/kit/src/exports/vite/dev/index.js b/packages/kit/src/exports/vite/dev/index.js index 4305bd73a775..6e9819f831d2 100644 --- a/packages/kit/src/exports/vite/dev/index.js +++ b/packages/kit/src/exports/vite/dev/index.js @@ -49,12 +49,13 @@ export async function dev(vite, vite_config, svelte_config) { async function resolve(id) { const url = id.startsWith('..') ? `/@fs${path.posix.resolve(id)}` : `/${id}`; - const module = await vite.ssrLoadModule(url); - + // need to ensure the entry is in the module graph before we can get it + // we leave the ssr parameter undefined because we care about the client-side code here + await vite.moduleGraph.ensureEntryFromUrl(url); const module_node = await vite.moduleGraph.getModuleByUrl(url); if (!module_node) throw new Error(`Could not find node for ${url}`); - return { module, module_node, url }; + return { module_node, url }; } async function update_manifest() { @@ -87,9 +88,8 @@ export async function dev(vite, vite_config, svelte_config) { if (node.component) { result.component = async () => { - const { module_node, module, url } = await resolve( - /** @type {string} */ (node.component) - ); + const id = /** @type {string} */ (node.component); + const { module_node, url } = await resolve(id); module_nodes.push(module_node); result.file = url.endsWith('.svelte') ? url : url + '?import'; // TODO what is this for? @@ -100,27 +100,30 @@ export async function dev(vite, vite_config, svelte_config) { extensions ); + // wait to load the module until after we check for illegal imports + const module = await vite.ssrLoadModule(url); return module.default; }; } if (node.shared) { - const { module, module_node } = await resolve(node.shared); + const { module_node, url } = await resolve(node.shared); module_nodes.push(module_node); - result.shared = module; - prevent_illegal_vite_imports( module_node, normalizePath(svelte_config.kit.files.lib), extensions ); + + // wait to load the module until after we check for illegal imports + result.shared = await vite.ssrLoadModule(url); } if (node.server) { - const { module } = await resolve(node.server); - result.server = module; + const { url } = await resolve(node.server); + result.server = await vite.ssrLoadModule(url); result.server_id = node.server; }