{"record":{"id":"58303e55d24266a9","repo":"v2rayA/v2rayA","slug":"v-file-is-not-found","errorCode":null,"errorMessage":"%v: file is not found","messagePattern":"(.+?): file is not found","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"service/kernel/v2ray/template_routing.go","lineNumber":318,"sourceCode":"\t\t\t\tOutboundTag: rule.Out,\n\t\t\t\tInboundTag:  routingInboundTags,\n\t\t\t}).(coreObj.RoutingRule)\n\t\t\tfor _, f := range rule.And {\n\t\t\t\tswitch f.Name {\n\t\t\t\tcase \"domain\", \"domains\":\n\t\t\t\t\tfor k, vv := range f.NamedParams {\n\t\t\t\t\t\tfor _, v := range vv {\n\t\t\t\t\t\t\tif k == \"contains\" {\n\t\t\t\t\t\t\t\trr.Domain = append(rr.Domain, v)\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif k == \"ext\" {\n\t\t\t\t\t\t\t\tdatFilenameAndTag := strings.SplitN(v, \":\", 2)\n\t\t\t\t\t\t\t\tif len(datFilenameAndTag) < 2 {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"%v: tag is not given\", v)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif !asset.DoesV2rayAssetExist(datFilenameAndTag[0]) {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"%v: file is not found\", datFilenameAndTag[0])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trr.Domain = append(rr.Domain, fmt.Sprintf(\"%v:%v\", k, v))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// unnamed param is not recommended\n\t\t\t\t\trr.Domain = append(rr.Domain, f.Params...)\n\t\t\t\tcase \"ip\":\n\t\t\t\t\tfor k, vv := range f.NamedParams {\n\t\t\t\t\t\tfor _, v := range vv {\n\t\t\t\t\t\t\tif k == \"ext\" {\n\t\t\t\t\t\t\t\tdatFilenameAndTag := strings.SplitN(v, \":\", 2)\n\t\t\t\t\t\t\t\tif len(datFilenameAndTag) < 2 {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"%v: tag is not given\", v)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif !asset.DoesV2rayAssetExist(datFilenameAndTag[0]) {\n\t\t\t\t\t\t\t\t\treturn fmt.Errorf(\"%v: file is not found\", datFilenameAndTag[0])\n\t\t\t\t\t\t\t\t}","sourceCodeStart":300,"sourceCodeEnd":336,"githubUrl":"https://github.com/v2rayA/v2rayA/blob/71e5442fc548c05680ee55eae943e6c0afe9ac51/service/kernel/v2ray/template_routing.go#L300-L336","documentation":"Returned while parsing RoutingA domain rules: the dat file named in an ext:<file>:<tag> parameter (e.g. ext:geosite.dat:cn) does not exist in the configured v2ray asset directory (asset.DoesV2rayAssetExist false), so the rule cannot be compiled.","triggerScenarios":"Thrown at service/kernel/v2ray/template_routing.go:318 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Download the missing .dat file (e.g. via geo update)","Fix the filename in the ext rule","Place the file in the assets directory"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"71e5442fc548c05680ee55eae943e6c0afe9ac51","analyzedAt":"2026-09-05T20:04:37.459Z","contentChangedAt":"2026-09-05T20:04:37.459Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}