{"record":{"id":"139d3117b503804f","repo":"BabylonJS/Babylon.js","slug":"invalid-version","errorCode":null,"errorMessage":"Invalid version: ","messagePattern":"Invalid version: ","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/dev/loaders/src/glTF/glTFFileLoader.pure.ts","lineNumber":1217,"sourceCode":"            },\r\n            (reason) => {\r\n                this._endPerformanceCounter(\"Validate JSON\");\r\n                Tools.Warn(`Failed to validate: ${reason.message}`);\r\n                this.onValidatedObservable.clear();\r\n            }\r\n        );\r\n    }\r\n\r\n    private _getLoader(loaderData: IGLTFLoaderData): IGLTFLoader {\r\n        const asset = (<any>loaderData.json).asset || {};\r\n\r\n        this._log(`Asset version: ${asset.version}`);\r\n        asset.minVersion && this._log(`Asset minimum version: ${asset.minVersion}`);\r\n        asset.generator && this._log(`Asset generator: ${asset.generator}`);\r\n\r\n        const version = GLTFFileLoader._parseVersion(asset.version);\r\n        if (!version) {\r\n            throw new Error(\"Invalid version: \" + asset.version);\r\n        }\r\n\r\n        if (asset.minVersion !== undefined) {\r\n            const minVersion = GLTFFileLoader._parseVersion(asset.minVersion);\r\n            if (!minVersion) {\r\n                throw new Error(\"Invalid minimum version: \" + asset.minVersion);\r\n            }\r\n\r\n            if (GLTFFileLoader._compareVersion(minVersion, { major: 2, minor: 0 }) > 0) {\r\n                throw new Error(\"Incompatible minimum version: \" + asset.minVersion);\r\n            }\r\n        }\r\n\r\n        const createLoaders: { [key: number]: (parent: GLTFFileLoader) => IGLTFLoader } = {\r\n            1: GLTFFileLoader._CreateGLTF1Loader,\r\n            2: GLTFFileLoader._CreateGLTF2Loader,\r\n        };\r\n\r","sourceCodeStart":1199,"sourceCodeEnd":1235,"githubUrl":"https://github.com/BabylonJS/Babylon.js/blob/0592b347b8a4ee0236089ea86a749cacfdb266d8/packages/dev/loaders/src/glTF/glTFFileLoader.pure.ts#L1199-L1235","documentation":"Thrown by GLTFFileLoader when the glTF asset's `asset.version` string cannot be parsed into a major/minor version pair by _parseVersion. The loader requires a well-formed version (e.g. \"2.0\") to select the correct glTF loader. It is thrown during asset header validation, before any loaders are created.","triggerScenarios":"Loading a .gltf/.glb whose JSON `asset.version` is missing, empty, or not in `<major>.<minor>` numeric form (e.g. \"two point zero\", \"2\", \"v2.0\").","commonSituations":"Hand-authored or tool-corrupted glTF JSON; files exported by broken converters; manually edited asset blocks where the version field was removed or mistyped.","solutions":["Open the glTF JSON and set `asset.version` to a valid string like \"2.0\" or \"1.0\"","Re-export the asset with a spec-compliant glTF validator/tool (e.g. gltf-pipeline, Blender exporter)","Validate the file with glTF-Validator to catch malformed asset metadata"],"exampleFix":"// before\n\"asset\": { \"version\": \"v2\" }\n// after\n\"asset\": { \"version\": \"2.0\" }","handlingStrategy":"validation","validationCode":"function hasValidGltfVersion(json) {\n  const v = json?.asset?.version;\n  return typeof v === 'string' && /^\\d+\\.\\d+$/.test(v.trim());\n}\nif (!hasValidGltfVersion(gltfJson)) throw new Error('asset.version missing or malformed');","typeGuard":"function hasValidGltfVersion(json) {\n  return typeof (json as any)?.asset?.version === 'string' && /^\\d+\\.\\d+$/.test((json as any).asset.version);\n}","tryCatchPattern":"try {\n  await loader.loadAsync(url);\n} catch (e) {\n  if (e.message?.startsWith('Invalid version:')) {\n    console.error('glTF asset.version is malformed:', e.message);\n  }\n}","preventionTips":["Validate all assets with glTF-Validator in CI before shipping","Never hand-edit the asset block without re-validating","Pin exporters to spec-compliant versions"],"tags":["gltf","validation","asset-metadata"],"backgroundTag":"gltf-invalid-version","analyzedSha":"0592b347b8a4ee0236089ea86a749cacfdb266d8","analyzedAt":"2026-08-30T15:11:20.442Z","schemaVersion":2},"datasetVersion":"2026-08-30T18:17:15.746Z"}