ssrModuleLoader.ts — vite Source File
Architecture documentation for ssrModuleLoader.ts, a typescript file in the vite codebase. 16 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR b7a0ff91_0490_7aed_6486_84da56e8e026["ssrModuleLoader.ts"] a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e 31fbe894_2070_4b11_3ffa_96b46ed3dfa9["ViteDevServer"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 31fbe894_2070_4b11_3ffa_96b46ed3dfa9 abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64 795dec35_22f9_80f5_ccab_9c2d170af0d3["unwrapId"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 795dec35_22f9_80f5_ccab_9c2d170af0d3 7916c84f_5621_2b3b_d220_a171ebce997f["environment.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 7916c84f_5621_2b3b_d220_a171ebce997f f634223d_ed8e_a65b_08f8_a839ec17994a["DevEnvironment"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> f634223d_ed8e_a65b_08f8_a839ec17994a 18db4f26_79f1_5b7d_b291_4feeaf95538f["hmr.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 18db4f26_79f1_5b7d_b291_4feeaf95538f 7c428646_092a_d4a3_4ee1_a6544a5cae8a["NormalizedServerHotChannel"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 7c428646_092a_d4a3_4ee1_a6544a5cae8a 09588b79_e65d_f18b_cb8c_e85991fbc94c["error.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 09588b79_e65d_f18b_cb8c_e85991fbc94c 176d3c88_57c7_304f_2535_f2d1054b5048["buildErrorMessage"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 176d3c88_57c7_304f_2535_f2d1054b5048 e29c58b0_0755_ae27_7a1e_c5e90513f90f["ssrStacktrace.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> e29c58b0_0755_ae27_7a1e_c5e90513f90f 5028e255_92bf_a4fa_b8ac_c4b82ad977b0["ssrFixStacktrace"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> 5028e255_92bf_a4fa_b8ac_c4b82ad977b0 d14cf24c_f830_6905_0df1_4e9b0f67c84b["serverModuleRunner.ts"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> d14cf24c_f830_6905_0df1_4e9b0f67c84b ff59ab93_7c74_485b_47bc_a4e4a58d6455["createServerModuleRunnerTransport"] b7a0ff91_0490_7aed_6486_84da56e8e026 --> ff59ab93_7c74_485b_47bc_a4e4a58d6455 style b7a0ff91_0490_7aed_6486_84da56e8e026 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import colors from 'picocolors'
import type { EvaluatedModuleNode } from 'vite/module-runner'
import {
ESModulesEvaluator,
ModuleRunner,
createNodeImportMeta,
} from 'vite/module-runner'
import type { ViteDevServer } from '../server'
import { unwrapId } from '../../shared/utils'
import type { DevEnvironment } from '../server/environment'
import type { NormalizedServerHotChannel } from '../server/hmr'
import { buildErrorMessage } from '../server/middlewares/error'
import { ssrFixStacktrace } from './ssrStacktrace'
import { createServerModuleRunnerTransport } from './runtime/serverModuleRunner'
type SSRModule = Record<string, any>
export async function ssrLoadModule(
url: string,
server: ViteDevServer,
fixStacktrace?: boolean,
): Promise<SSRModule> {
const environment = server.environments.ssr
server._ssrCompatModuleRunner ||= new SSRCompatModuleRunner(environment)
url = unwrapId(url)
return instantiateModule(
url,
server._ssrCompatModuleRunner,
environment,
fixStacktrace,
)
}
async function instantiateModule(
url: string,
runner: ModuleRunner,
environment: DevEnvironment,
fixStacktrace?: boolean,
): Promise<SSRModule> {
const mod = await environment.moduleGraph.ensureEntryFromUrl(url)
if (mod.ssrError) {
throw mod.ssrError
}
try {
return await runner.import(url)
} catch (e: any) {
if (e.stack && fixStacktrace) {
ssrFixStacktrace(e, environment.moduleGraph)
}
environment.logger.error(
buildErrorMessage(e, [
colors.red(`Error when evaluating SSR module ${url}: ${e.message}`),
]),
{
timestamp: true,
clear: environment.config.clearScreen,
error: e,
},
)
throw e
}
}
class SSRCompatModuleRunner extends ModuleRunner {
constructor(private environment: DevEnvironment) {
super(
{
transport: createServerModuleRunnerTransport({
channel: environment.hot as NormalizedServerHotChannel,
}),
createImportMeta: createNodeImportMeta,
sourcemapInterceptor: false,
hmr: false,
},
new ESModulesEvaluator(),
)
}
protected override async directRequest(
url: string,
mod: EvaluatedModuleNode,
callstack: string[],
): Promise<any> {
const id = mod.meta && 'id' in mod.meta && mod.meta.id
// serverId doesn't exist for external modules
if (!id) {
return super.directRequest(url, mod, callstack)
}
const viteMod = this.environment.moduleGraph.getModuleById(id)
if (!viteMod) {
return super.directRequest(id, mod, callstack)
}
try {
const exports = await super.directRequest(id, mod, callstack)
viteMod.ssrModule = exports
return exports
} catch (err) {
viteMod.ssrError = err
throw err
}
}
}
Domain
Subdomains
Functions
Classes
Types
Dependencies
Imported By
Source
Frequently Asked Questions
What does ssrModuleLoader.ts do?
ssrModuleLoader.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain, ConfigEngine subdomain.
What functions are defined in ssrModuleLoader.ts?
ssrModuleLoader.ts defines 2 function(s): instantiateModule, ssrLoadModule.
What does ssrModuleLoader.ts depend on?
ssrModuleLoader.ts imports 16 module(s): DevEnvironment, NormalizedServerHotChannel, ViteDevServer, buildErrorMessage, createServerModuleRunnerTransport, environment.ts, error.ts, hmr.ts, and 8 more.
What files import ssrModuleLoader.ts?
ssrModuleLoader.ts is imported by 1 file(s): index.ts.
Where is ssrModuleLoader.ts in the architecture?
ssrModuleLoader.ts is located at packages/vite/src/node/ssr/ssrModuleLoader.ts (domain: ViteCore, subdomain: ConfigEngine, directory: packages/vite/src/node/ssr).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free