Fejl BLAZOR106 ved lagring af Javascript/TypeScript-fil med samme komponents navn
Jeg har et .Net6 Blazor Server Side-projekt.
Jeg oprettede en komponent kaldet HomePage.razor, en anden kaldet HomePage.razor.cs og en TypeScript-fil kaldet HomePage.razor.ts. På denne måde får jeg en flot visuel af HomePage.razor i løsningsutforskeren, da "børne"-filerne indlejres i den.
Når jeg gemmer min TypeScript-fil, bliver filen wwwroot\Pages\HomePage.razor.js automatisk genereret, og jeg henviser til den i min _Host.cshtml.
Desuden, så snart jeg gemmer det, får jeg fejlen BLAZOR106 - JS-modulfilen 'c:\...\wwwroot\Pages\HomePage.razor.js' blev defineret, men der blev ikke fundet nogen tilknyttet razor-komponent eller visning for den.
Hvis jeg ændrer navnet på min TypeScript-fil fra HomePage.razor.ts til noget andet - som HomePage.ts - gemmer den og sletter den gamle genererede JS-fil i wwwroot, fungerer alt fint. Men på denne måde mister jeg den fine "sammenklapning efter navn" i Solution Explorer, som VS2022 tilbyder.
Jeg kunne ikke finde noget indhold relateret til BLAZOR106-fejlen (Google og Microsoft dokumentation), så jeg undrer mig over, om du ved, hvordan man løser dette problem.
Tak.
Svar #1
Jeg fik den samme fejl, men i mit tilfælde brugte jeg ikke engang en Razor-komponent, kun en Razor-side .cshtml-fil. Ligesom dig havde jeg også en .cshtml.cs og .cshtml.js fil, fordi jeg kan lide den måde, det er organiseret på.
Pages/Index.cshtml
Pages/Index.cshtml.cs
Pages/Index.cshtml.js
Oprindeligt brugte jeg en bundleconfig.json til at minificere på stedet.
Pages/Index.cshtml.min.js
Pages/Index.cshtml.min.js.map
Derefter brugte jeg libman til at kopiere js-filerne ind i:
wwwroot/js/Pages/Index.cshtml.js
wwwroot/js/Pages/Index.cshtml.min.js
wwwroot/js/Pages/Index.cshtml.min.js.map
Som du kan se, brugte jeg ikke razor-komponenter eller Blazor nogen steder i min applikation. Og dette fungerede fint, når jeg målrettede .NET 5
Jeg opgraderede til .NET 6, og jeg begyndte at få den samme fejl, som du får.
Der foregår baggrundsmagi her, som aspnet-teamet burde tage sig af, men i mellemtiden var min løsning at fjerne .cshtml.-delen fra filnavnet i wwwroot.
wwwroot/js/Pages/Index.min.js
wwwroot/js/Pages/Index.min.js.map
For at opnå dette ændrede jeg min bundleconfig til at outputte direkte til disse filer, og jeg fjernede libman-delen. Det gav faktisk mere mening end det, jeg gjorde før, fordi jeg kun bekymrer mig om, at den originale Index.cshtml.js-fil er indlejret.
bundleconfig.json
{
"outputFileName": "Pages/Index.cshtml.min.js",
"inputFiles": [
"Pages/Index.cshtml.js"
]
}
libman.json
{
"provider": "filesystem",
"library": "Pages/Index.cshtml.js",
"files": [
"Pages/Index.cshtml.js",
"Pages/Index.cshtml.min.js",
"Pages/Index.cshtml.min.js.map"
],
"destination": "wwwroot/js/"
}
Til bare dette:
bundleconfig.json
{
"outputFileName": "wwwroot/js/Pages/Index.min.js",
"inputFiles": [
"Pages/Index.cshtml.js"
]
}
