moeru-ai/airi · warning
NO model src, cannot load VRM model.
Error message
NO model src, cannot load VRM model.
What it means
VRMModel's load routine (guarded by a requestId for cancellation) requires the scene and a truthy modelSrc. When modelSrc is empty it warns and aborts the whole load request; no model is added to the scene and no load/error events beyond the warn are emitted.
Source
Thrown at packages/stage-ui-three/src/components/Model/VRMModel.vue:666
async function loadModel() {
const requestId = invalidatePendingLoads()
const currentLoadReason = resolveVrmLoadReason()
const loadStartedAt = performance.now()
let nextVrm: VRM | undefined
let nextVrmGroup: Group | undefined
let nextVrmAnimationMixer: AnimationMixer | undefined
let nextVrmEmote: ReturnType<typeof useVRMEmote> | undefined
let didCommitLoad = false
try {
if (!scene.value) {
await until(() => scene.value).toBeTruthy()
if (!isLoadRequestCurrent(requestId))
return
}
if (!modelSrc.value) {
console.warn('NO model src, cannot load VRM model.')
return
}
emit('loadStart', currentLoadReason)
if (isStageThreeRuntimeTraceEnabled()) {
stageThreeRuntimeTraceContext.emit(stageThreeTraceVrmLoadStartEvent, {
modelSrc: modelSrc.value,
reason: currentLoadReason,
rendererMemory: createThreeRendererMemorySnapshot(getRendererInstance()),
sceneSummary: createVrmSceneSummarySnapshot(),
ts: loadStartedAt,
})
}
modelLoaded.value = false
const reusableInstance = takeManagedVrmInstance(getManagedVrmScopeKey(), modelSrc.value)
if (reusableInstance) {View on GitHub (pinned to 677329427f)
Solutions
- Ensure modelSrc resolves to a usable VRM source (object URL, http(s) URL, or data URL) before the component renders — use v-if or await the store
- Re-select or re-import the VRM model if the stored source no longer exists
- Check the parent data flow: the prop must actually reach the component with a value
Example fix
// before <VRMModel :model-src="vrmStore.src" /> // after <VRMModel v-if="vrmStore.src" :model-src="vrmStore.src" />
Defensive patterns
Strategy: validation
Validate before calling
// Before rendering VRMModel const ready = computed(() => typeof modelSrc.value === 'string' && modelSrc.value.length > 0) // template: <VRMModel v-if="ready" :model-src="modelSrc" />
Type guard
function isModelSource(value: unknown): value is string {
return typeof value === 'string' && value.trim().length > 0
} Prevention
- Resolve the VRM source (URL/blob) before mounting the component
- Re-select or re-import the model when the stored source disappears
- Handle loadStart/error events to detect lifecycle problems early
When it happens
Trigger: Rendering VRMModel without a resolved modelSrc: the model store/settings still loading, a cleared or missing VRM selection, or the prop bound to undefined by mistake.
Common situations: First-run state before any VRM is chosen; switching models where the new src is briefly undefined; persisted settings pointing at a deleted model record.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- VRM model loading failure!
- No Live2D model source provided.
- [Spine] No model source provided
- No VRM animation loaded
- Failed to set colorSpace on texture:
AI-assisted analysis of moeru-ai/airi@677329427f (2026-08-18).
Data as JSON: /api/errors/ecf3f4790a0d89f8.
Report an issue: GitHub.