Fel BLAZOR106 vid sparande av Javascript/TypeScript-fil med samma komponentnamn


Jag har ett .Net6 Blazor Server Side-projekt.

Jag skapade en komponent som heter HomePage.razor, en annan som heter HomePage.razor.cs och en TypeScript-fil som heter HomePage.razor.ts. På det här sättet får jag en fin visuell översikt av HomePage.razor i lösningsutforskaren, eftersom ”barn”-filerna fäster under den.

När jag sparar min TypeScript-fil genereras filen wwwroot\Pages\HomePage.razor.js automatiskt, och jag refererar till den i min _Host.cshtml.

Dessutom, så snart jag sparar det, får jag felet BLAZOR106 - JS-modulfilen 'c:\...\wwwroot\Pages\HomePage.razor.js' definierades men ingen tillhörande razor-komponent eller vy hittades för den.

Om jag ändrar namnet på min TypeScript-fil från HomePage.razor.ts till något annat - som HomePage.ts - sparar den och raderar den gamla genererade JS-filen i wwwroot, fungerar allt bra. Men på det här sättet tappar jag den snygga "komprimeringen efter namn" i Solution Explorer som VS2022 erbjuder.

Jag kunde inte hitta något innehåll relaterat till BLAZOR106-felet (Google och Microsofts dokumentation), så jag undrar om du vet hur man löser detta problem.

Tack.

Svar #1

Jag fick samma fel men i mitt fall använde jag inte ens en Razor-komponent, bara en Razor-sida .cshtml-fil. Likt dig hade jag också en .cshtml.cs- och .cshtml.js-fil eftersom jag gillar att ha det organiserat så.

Pages/Index.cshtml
Pages/Index.cshtml.cs
Pages/Index.cshtml.js

Ursprungligen använde jag en bundleconfig.json för att minifiera på plats.

Pages/Index.cshtml.min.js
Pages/Index.cshtml.min.js.map

Sedan använde jag libman för att kopiera js-filerna till:

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 använde jag inte Razor-komponenter eller Blazor någonstans i min applikation. Och detta fungerade bra när jag riktade in mig på .NET 5.

Jag uppgraderade till .NET 6 och jag började få samma fel som du får.

Bakgrundsmagi pågår här som aspnet-teamet borde ta itu med, men under tiden var min lösning att ta bort .cshtml.-delen från filnamnet i wwwroot.

wwwroot/js/Pages/Index.min.js
wwwroot/js/Pages/Index.min.js.map

För att uppnå detta ändrade jag min bundleconfig för att direkt skriva ut till dessa filer och jag tog bort libman-delen. Det var faktiskt mer logiskt än vad jag gjorde tidigare eftersom jag bara bryr mig om att den ursprungliga Index.cshtml.js-filen är inbäddad.

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/"
}

Till just detta:

bundleconfig.json
{
    "outputFileName": "wwwroot/js/Pages/Index.min.js",
    "inputFiles": [
      "Pages/Index.cshtml.js"
    ]
}

Relaterade artiklar