GithubHelp home page GithubHelp logo

jsakamoto / blazorwasmprerendering.build Goto Github PK

View Code? Open in Web Editor NEW
243.0 9.0 13.0 9.61 MB

When you publish your Blazor Wasm app, this package pre-renders and saves the app as static HTML files in your public folder.

Home Page: https://jsakamoto.github.io/BlazorWasmPreRendering.Build/

License: Mozilla Public License 2.0

HTML 19.94% C# 71.34% CSS 6.80% JavaScript 1.92%
blazor blazor-webassembly prerendering

blazorwasmprerendering.build's People

Contributors

biegehydra avatar jsakamoto avatar oneolddev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blazorwasmprerendering.build's Issues

Error when publishing to GitHub pages

Here are my messages on publish from GitHub repo:

Start fetching...[http://127.0.0.1:5050/]
[18](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:18)
  Getting http://127.0.0.1:5050/...
[19](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:19)
Error: ROR] The HTTP status code was not OK. (it was (500)InternalServerError.)
[20](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:20)
      System.InvalidOperationException: Cannot provide a value for property 'Analytics' on type 'Blazor.Analytics.Components.NavigationTracker'. There is no registered service of type 'Blazor.Analytics.IAnalytics'.
[21](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:21)
         at Microsoft.AspNetCore.Components.ComponentFactory.<>c__DisplayClass7_0.<CreateInitializer>g__Initialize|1(IServiceProvider serviceProvider, IComponent component)
[22](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:22)
         at Microsoft.AspNetCore.Components.ComponentFactory.PerformPropertyInjection(IServiceProvider serviceProvider, IComponent instance)
[23](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:23)
         at Microsoft.AspNetCore.Components.ComponentFactory.InstantiateComponent(IServiceProvider serviceProvider, Type componentType)
[24](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:24)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateChildComponentOnFrame(RenderTreeFrame& frame, Int32 parentComponentId)
[25](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:25)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(DiffContext& diffContext, Int32 frameIndex)
[26](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:26)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext& diffContext, Int32 frameIndex)
[27](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:27)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex)
[28](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:28)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
[29](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:29)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
[30](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:30)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
[31](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:31)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
[32](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:32)
      --- End of stack trace from previous location ---
[33](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:33)
         at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)
[34](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:34)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
[35](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:35)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender()
[36](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:36)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)
[37](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:37)
         at Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged()
[38](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:38)
         at Microsoft.AspNetCore.Components.ComponentBase.CallOnParametersSetAsync()
[39](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:39)
         at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
[40](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:40)
         at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.HandleException(Exception exception)
[41](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:41)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.HandleExceptionViaErrorBoundary(Exception error, ComponentState errorSourceOrNull)
[42](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:42)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToPendingTasks(Task task, ComponentState owningComponentState)
[43](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:43)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
[44](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:44)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)
[45](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:45)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(Int32 componentId, ParameterView initialParameters)
[46](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:46)
         at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.CreateInitialRenderAsync(Type componentType, ParameterView initialParameters)
[47](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:47)
         at Microsoft.AspNetCore.Components.Rendering.HtmlRenderer.RenderComponentAsync(Type componentType, ParameterView initialParameters)
[48](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:48)
         at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<>c__11`1.<<InvokeAsync>b__11_0>d.MoveNext()
[49](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:49)
      --- End of stack trace from previous location ---
[50](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:50)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.StaticComponentRenderer.PrerenderComponentAsync(ParameterView parameters, HttpContext httpContext, Type componentType)
[51](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:51)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.StaticComponentAsync(HttpContext context, Type type, ParameterView parametersCollection)
[52](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:52)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ComponentRenderer.RenderComponentAsync(ViewContext viewContext, Type componentType, RenderMode renderMode, Object parameters)
[53](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:53)
         at AspNetCoreGeneratedDocument.Pages__Host.ExecuteAsync() in C:\Projects\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\Pages\_Host.cshtml:line 5
[54](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:54)
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
[55](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:55)
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
[56](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:56)
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
[57](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:57)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
[58](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:58)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
[59](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:59)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
[60](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:60)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
[61](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:61)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
[62](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:62)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
[63](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:63)
      --- End of stack trace from previous location ---
[64](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:64)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
[65](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:65)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
[66](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:66)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
[67](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:67)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
[68](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:68)
      --- End of stack trace from previous location ---
[69](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:69)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
[70](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:70)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
[71](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:71)
         at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
[72](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:72)
         at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
[73](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:73)
      
[74](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:74)
      HEADERS
[75](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:75)
      =======
[76](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:76)
      Host: 127.0.0.1:5050
[77](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:77)
      
[78](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:78)
  
[79](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:79)
  INFORMATION
[80](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:80)
  ===========
[81](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:81)
  The crawler encountered errors and/or warnings.
[82](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:82)
  If you want to keep running the pre-rendering server process for debugging it on live, you can do that by setting the "BlazorWasmPrerenderingKeepServer" MSBuild property to "true".
[83](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:83)
  
[84](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:84)
  ex) dotnet publish -p:BlazorWasmPrerenderingKeepServer=true
[85](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:85)
  
[86](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:86)
  Fetching complete.
[87](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:87)
/home/runner/.nuget/packages/blazorwasmprerendering.build/1.0.0-preview.23.0/build/BlazorWasmPreRendering.Build.targets(56,5): error MSB3073: The command "dotnet "/home/runner/.nuget/packages/blazorwasmprerendering.build/1.0.0-preview.23.0/build/../tools/net6.0/blazorwasm-prerendering-server.dll" -a "angelblaze" -t "angelblaze.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "/home/runner/work/angelblaze/angelblaze/bin/Release/net6.0/publish" -i "/home/runner/work/angelblaze/angelblaze/obj/Release/net6.0/." -m "" -f "net6.0" --serviceworkerassetsmanifest "" -e "Prerendering" -o "AppendHtmlExtension"  -u "" -r "Static"" exited with code 1. [/home/runner/work/angelblaze/angelblaze/angelblaze.csproj]
[88](https://github.com/nakigoe/angelblaze/runs/5672208861?check_suite_focus=true#step:4:88)
Error: Process completed with exit code 1.

Publish fails when blazor app uses BlazorWasmAntivirusProtection Nuget in the project

Sometimes blazor apps dlls are flagged as false positive and blocked by firewalls or antiviruses. There is already an issue 36978 tracking this.

Meanwhile there is an another great library BlazorWasmAntivirusProtection which is used to overcome this false flagging of blazor apps by antivirus or firewall.

When we use this BlazorWasmAntivirusProtection library and try to prerender, publish fails!!!.

Here is the repo - BlazorWasmAVPrerender to replicate the issue.

Error log:

BlazorWasmAVPrerender -> /home/runner/work/BlazorWasmAVPrerender/BlazorWasmAVPrerender/dist/BlazorWasmAVPrerender/
  Unhandled exception. System.Exception: Could not load the assembly "BlazorWasmAVPrerender" in search directories below.
  /home/runner/work/BlazorWasmAVPrerender/BlazorWasmAVPrerender/dist/BlazorWasmAVPrerender/wwwroot/_framework
  (pwd: /home/runner/work/BlazorWasmAVPrerender/BlazorWasmAVPrerender/BlazorWasmAVPrerender)
   ---> System.BadImageFormatException: Could not load file or assembly 'BlazorWasmAVPrerender, Culture=neutral, PublicKeyToken=null'. An attempt was made to load a program with an incorrect format.
  
  File name: 'BlazorWasmAVPrerender, Culture=neutral, PublicKeyToken=null' ---> System.BadImageFormatException: Bad IL format.
     at System.Runtime.Loader.AssemblyLoadContext.InternalLoad(ReadOnlySpan`1 arrAssembly, ReadOnlySpan`1 arrSymbols)
     at System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(Stream assembly, Stream assemblySymbols)
     at System.Runtime.Loader.AssemblyLoadContext.LoadFromStream(Stream assembly)
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.CustomAssemblyLoader.LoadAssemblyFrom(String assemblyDir, String assemblyName) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\CustomAssemblyLoader.cs:line 36
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.CustomAssemblyLoader.<>c__DisplayClass1_0.<.ctor>b__1(String dir) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\CustomAssemblyLoader.cs:line 20
     at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
     at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
     at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found)
     at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.CustomAssemblyLoader.<.ctor>b__1_0(AssemblyLoadContext context, AssemblyName name) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\CustomAssemblyLoader.cs:line 19
     at System.Runtime.Loader.AssemblyLoadContext.GetFirstResolvedAssemblyFromResolvingEvent(AssemblyName assemblyName)
     at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingEvent(AssemblyName assemblyName)
     at System.Runtime.Loader.AssemblyLoadContext.ResolveUsingResolvingEvent(IntPtr gchManagedAssemblyLoadContext, AssemblyName assemblyName)
     at System.Reflection.RuntimeAssembly.InternalLoad(ObjectHandleOnStack assemblyName, ObjectHandleOnStack requestingAssembly, StackCrawlMarkHandle stackMark, Boolean throwOnFileNotFound, ObjectHandleOnStack assemblyLoadContext, ObjectHandleOnStack retAssembly)
     at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, RuntimeAssembly requestingAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, AssemblyLoadContext assemblyLoadContext)
     at System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName(AssemblyName assemblyName)
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.CustomAssemblyLoader.LoadAssembly(String assemblyName) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\CustomAssemblyLoader.cs:line 49
     --- End of inner exception stack trace ---
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.CustomAssemblyLoader.LoadAssembly(String assemblyName) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\CustomAssemblyLoader.cs:line [55](https://github.com/fingers10/BlazorWasmAVPrerender/actions/runs/3374441807/jobs/5600065526#step:7:56)
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.Program.BuildPrerenderingOptions(CustomAssemblyLoader assemblyLoader, CommandLineOptions commandLineOptions) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\Program.cs:line 103
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.Program.Main(String[] args) in C:\Projects\My\Blazor\BlazorWasmPreRendering.Build\BlazorWasmPreRendering.Build\Program.cs:line 28
     at Toolbelt.Blazor.WebAssembly.PrerenderServer.Program.<Main>(String[] args)
  Aborted (core dumped)

BlazorWasmAvPrerender GitHub Actions Link to check additional details if needed

routing behaviour on published prerendered wasm project: not loading the prerendered page

Hello! this package is really interesting, sincerely thinking to become a contributor. I want to produce a static prerendered site at PUBLISH/BUILD time with this package, that could be deployed on a static site and no more needs to calls the API layer (blazor actually misses an automatic tool that is doing this, like the feature of Nuxt for VUE for example).
I got the goal using as you mentioned in the documentation the PersistentComponentState service and it is working, but
i'm facing a strange behaviour on routing on hrefs from the navlink menu (but all hrefs are affected): when clicked, it seems the app is trying to load the "non prerendered" page (the one calling the API)" and not the published page the package creates for example in the "fetchdata/index.html". Once you refresh the page the prerendered page is loaded correctly and you can see is totally static and prerendered tryng to refresh it few times in the fetchdata, the data is always the same cause is loaded from the PersistentComponentState. You can reproduce and see this behaviour at this link.
https://staticspademo.z13.web.core.windows.net/
Am i missing something in the routing behaviour that i'm doing wrong?

System.InvalidOperationException: 'RemoteNavigationManager' has not been initialized.

Hi @jsakamoto ,

I recently noticed that the Publishing fails when I have NavigationManager injected inside a class which is not a component.

For example,

public class SlugService(NavigationManager navigationManager)
{
    public string GetSlug()
    {
        var slug = navigationManager.Uri.ToString().Split('/').Last();
        ArgumentException.ThrowIfNullOrWhiteSpace(slug, nameof(slug));
        return slug;
    }
}

Register this in Program.cs

services.AddSingleton(serviceProvider => new SlugService(serviceProvider.GetRequiredService<NavigationManager>()));

This setup works fine locally when running but fails during publish.

Here is the exception details:

Getting http://127.0.0.1:5050/blogs/unit-testing-filters-in-asp-net-webapi...
Error: ROR] The HTTP status code was not OK. (it was (500)InternalServerError.)
      System.InvalidOperationException: 'RemoteNavigationManager' has not been initialized.
         at Microsoft.AspNetCore.Components.NavigationManager.AssertInitialized()
         at Microsoft.AspNetCore.Components.NavigationManager.get_Uri()
         at SharedComponents.SlugService.GetSlug()
         at BaseComponents.Content.OnInitialized()
         at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(DiffContext& diffContext, Int32 frameIndex)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext& diffContext, Int32 frameIndex)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl)
         at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
      --- End of stack trace from previous location ---
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.AddToRenderQueue(Int32 componentId, RenderFragment renderFragment)
         at Microsoft.AspNetCore.Components.Endpoints.SSRRenderModeBoundary.SetParametersAsync(ParameterView parameters)
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SupplyCombinedParameters(ParameterView directAndCascadingParameters)
      --- End of stack trace from previous location ---
         at Microsoft.AspNetCore.Components.Rendering.ComponentState.SetDirectParameters(ParameterView parameters)
         at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderRootComponentAsync(Int32 componentId, ParameterView initialParameters)
         at Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(IComponent component, ParameterView initialParameters)
         at Microsoft.AspNetCore.Components.Endpoints.EndpointHtmlRenderer.<>c__DisplayClass35_0.<PrerenderComponentAsync>b__0()
         at Microsoft.AspNetCore.Components.Rendering.RendererSynchronizationContext.<InvokeAsync>g__Execute|9_0[TResult](ValueTuple`3 state)
      --- End of stack trace from previous location ---
         at Microsoft.AspNetCore.Components.Endpoints.EndpointHtmlRenderer.PrerenderComponentAsync(HttpContext httpContext, Type componentType, IComponentRenderMode prerenderMode, ParameterView parameters, Boolean waitForQuiescence)
         at Microsoft.AspNetCore.Mvc.Rendering.HtmlHelperComponentExtensions.RenderComponentAsync(IHtmlHelper htmlHelper, Type componentType, RenderMode renderMode, Object parameters)
         at AspNetCoreGeneratedDocument.Pages__Host.ExecuteAsync() in C:\Projects\My\Blazor\PreRendering\BlazorWasmPreRendering.Build.WebHost\Pages\_Host.cshtml:line 5
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
         at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
         at Microsoft.AspNetCore.Mvc.ViewFeatures.ViewExecutor.ExecuteAsync(ViewContext viewContext, String contentType, Nullable`1 statusCode)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|30_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
      --- End of stack trace from previous location ---
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
      --- End of stack trace from previous location ---
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
         at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
         at Toolbelt.Blazor.HeadElement.Middlewares.HeadElementServerPrerenderingMiddleware.InvokeAsync(HttpContext context, IHeadElementHelperStore store)
         at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)

GitHub Actions Build: https://github.com/ILoveDotNet/ilovedotnet/actions/runs/9917040406/job/27400021468

Please can you assist me on this?

Runtime render exception [TypeError: Cannot read properties of null (reading 'insertBefore')] after deploying

Hi @jsakamoto ,

I was deploying the published version and got the below runtime error. This error doesn't appear when I published the same blazor wasm project without this package.

Error :

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Cannot read properties of null (reading 'insertBefore')
      TypeError: Cannot read properties of null (reading 'insertBefore')
          at x (https://localhost:44354/_framework/blazor.webassembly.js:1:17125)
          at M (https://localhost:44354/_framework/blazor.webassembly.js:1:16836)
          at se.insertComponent (https://localhost:44354/_framework/blazor.webassembly.js:1:24352)
          at se.insertFrame (https://localhost:44354/_framework/blazor.webassembly.js:1:23075)
          at se.applyEdits (https://localhost:44354/_framework/blazor.webassembly.js:1:21490)
          at se.updateComponent (https://localhost:44354/_framework/blazor.webassembly.js:1:20774)
          at https://localhost:44354/_framework/blazor.webassembly.js:1:59545
          at Vt.Ke._internal.renderBatch (https://localhost:44354/_framework/blazor.webassembly.js:1:59917)
          at Object.Gt [as invokeJSFromDotNet] (https://localhost:44354/_framework/blazor.webassembly.js:1:62760)
          at Object.Ii (https://localhost:44354/_framework/dotnet.7.0.10.uwx4ocxnwo.js:5:71974)
Microsoft.JSInterop.JSException: Cannot read properties of null (reading 'insertBefore')
TypeError: Cannot read properties of null (reading 'insertBefore')
    at x (https://localhost:44354/_framework/blazor.webassembly.js:1:17125)
    at M (https://localhost:44354/_framework/blazor.webassembly.js:1:16836)
    at se.insertComponent (https://localhost:44354/_framework/blazor.webassembly.js:1:24352)
    at se.insertFrame (https://localhost:44354/_framework/blazor.webassembly.js:1:23075)
    at se.applyEdits (https://localhost:44354/_framework/blazor.webassembly.js:1:21490)
    at se.updateComponent (https://localhost:44354/_framework/blazor.webassembly.js:1:20774)
    at https://localhost:44354/_framework/blazor.webassembly.js:1:59545
    at Vt.Ke._internal.renderBatch (https://localhost:44354/_framework/blazor.webassembly.js:1:59917)
    at Object.Gt [as invokeJSFromDotNet] (https://localhost:44354/_framework/blazor.webassembly.js:1:62760)
    at Object.Ii (https://localhost:44354/_framework/dotnet.7.0.10.uwx4ocxnwo.js:5:71974)
   at Microsoft.JSInterop.WebAssembly.WebAssemblyJSRuntime.InvokeUnmarshalled[Int32,RenderBatch,Object,Object](String , Int32 , RenderBatch , Object , Int64 )
   at Microsoft.JSInterop.WebAssembly.WebAssemblyJSRuntime.InvokeUnmarshalled[Int32,RenderBatch,Object](String , Int32 , RenderBatch )
   at Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer.UpdateDisplayAsync(RenderBatch& )
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

Screenshot :

image

Here is the sample repo link to reproduce above error - https://github.com/fingers10/PublishTest

Please let me know if any other additional details are needed.

Thanks,
fingers10

Duplicate conflicting <title>, <meta descripiton=""> and schema.org components

@jsakamoto ๆง˜
ใ„ใคใ‚‚ใŠไธ–่ฉฑใซใชใฃใฆใŠใ‚Šใพใ™
thank you for your hard work! Your extension is working for my website https://nakigoe.org

The only problem I encounter now is that I have to remove all the SEO from the wwwroot/index.html, since the extension generates conflicting SEO components. It takes them both from wwwroot/index.html and from every page indexed by the extension:

  • duplicate conflicting <title></title>
  • duplicate conflicting <meta description="">
  • duplicate conflicting schemaยทorg SEO microdata and formats

There is a lot of manual labour ahead now for every single page, to fix the SEO data.

What the appropriate solution might be to remove the duplicates, since it might not be the best idea to remove the <title>nakigoe.org</title> tag from the static wwwroot/index.html, since every page requires a <title></title> tag by W3 standards.

Partially pre-rendering

This is not a real issue, more a question.
I have an Azure Static WebApp with Azure Functions and I'm investigating if your package will work in my scenario.
I tried it and my index and counter pages are pre-rendered successful, but with my FetchData page the package wants to pre-render the data as well. But during publish the Function is not up yet so it generates an error message.
And I don't want to pre-render the data.

Can this package pre-render all static data and leave the dynamic data as is?
If so how do I do this?

My code is at https://github.com/pmeems/BlazorWasmTailwind and my static website runs at https://purple-meadow-079619e03.azurestaticapps.net/

Autocreate AMP-HTML

Hi, thank you for the wonderful extension.
Since you are creating HTML files, could you take it a step further and
create AMP-HTML files, they are quite important for SEO also.

Prerender specific paths

Is it possible to configure the rendering? To tell it to generate unique pages based on a route with specific parameter.

I want to prerender my blog which is written in Blazor. To get SEO.

I have posts stored as markdown files which are loaded by page which has the following route:

@page "/posts/{id}"

id is mapped to the name of a markdown file. test.md has Id test

So I wish that I could configure the generator to iterate the markdown files in a folder, and to construct the paths (with parameters) for it to prerender into separate files.

After .NET 8 update appsettings.json.br not found after publishing to github pages

Hi @jsakamoto ,

I have updated my project to .NET 8 and published main branch of https://github.com/ILoveDotNet/ilovedotnet to github pages. I have noticed an runtime error which says appsettings.json.br is not found. The error is coming from brotliloader.min.js. This issue does not happen when publishing to IIS but happens when published to github pages.

Since the issue happened in production. I have reverted the .NET 8 upgrade. Howerver here is the .NET 8 commit link in main branch for your reference- ILoveDotNet/ilovedotnet@58b42ec

I remember we have already faced brotli issue in the past. Here is the previous issue reference - #22 (comment)

image

Please can you assist me on this? Feel free to let me know if any additional details are needed.

Cannot be deployed to netlify

Cannot deploy on Netlify.
Here is an error->
8:52:06 PM: /opt/buildhome/.nuget/packages/blazorwasmprerendering.build/2.0.0-preview.7/build/BlazorWasmPreRendering.Build.targets(61,5): error MSB3073: The command "dotnet "/opt/buildhome/.nuget/packages/blazorwasmprerendering.build/2.0.0-preview.7/build/../tools/net6.0/BlazorWasmPreRendering.Build.dll" -a "BlazorAppPrerender" -t "BlazorAppPrerender.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "/opt/build/repo/release" -i "/opt/build/repo/obj/Release/net6.0/." -m "" -f "net6.0" --serviceworkerassetsmanifest "" --environment "Prerendering" --emulateauthme "true" --locale "en" -o "IndexHtmlInSubFolders" -d -u "" -r "Static" --serverport "5050-5999" --bwapoptionsdllext "bin"" exited with code 1. [/opt/build/repo/BlazorAppPrerender.csproj]

https://github.com/Laftek/BlazorAppPrerender

Pre-rendered contents have invalid formatted void elements with a trailing slash

Split from #13 from @nakigoe


HTML that is generated has errors according to https://validator.w3.org/nu/
Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.
The automatically generated trailing slash inside HTML tags prevents images from displaying when sharing the website on social networks (LinkedIn)

<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0"/>
<title>Blazor WebAssembly .NET 7 Starting Template</title>
<meta name="description" content="Blazor WebAssembly .NET 7 production-ready starting template, coming from GitHub Actions and Vercel. Compression, linking, pre-rendering and analytics enabled."/>
<base href="/"/>
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet"/>
<link href="css/app.css" rel="stylesheet"/>
<link href="nakigoe.styles.css" rel="stylesheet"/>
<link rel="image_src" href="https://nakigoe.org/_SRC/nakigoe-academy-night-2048.jpg" type="image/jpeg"/>
<meta name="image_width" content="2048"/>
<meta name="image_height" content="2048"/>
<meta property="og:image:secure_url" content="https://nakigoe.org/_SRC/nakigoe-academy-night-2048.jpg"/>
<meta property="og:image" content="https://nakigoe.org/_SRC/nakigoe-academy-night-2048.jpg"/>
<meta property="og:image:type" content="image/jpeg"/>
<meta property="og:image:width" content="2048"/>
<meta property="og:image:height" content="2048"/>
<meta name="theme-color" content="#260040"/>
<meta name="apple-mobile-web-app-status-bar-style" content="#260040"/>
<meta name="msapplication-navbutton-color" content="#260040"/>
<meta name="msapplication-TileColor" content="#260040"/>
<meta name="msapplication-TileImage" content="_SVG/icon.svg"/>
<link rel="icon" href="_SVG/icon.svg" sizes="any" type="image/svg+xml"/>
<link rel="apple-touch-icon-precomposed" href="_SVG/icon.svg" sizes="any" type="image/svg+xml"/>
<link rel="apple-touch-startup-image" href="_SVG/icon.svg" type="image/svg+xml"/>

No response from localhost:5050 during publish

This package looks really useful. I tried it with my Blazor wasm app SkyDocs, but it doesn't work. During the publish step, it receives a timeout from the local server.

  Start fetching...
  Getting http://127.0.0.1:5050/...
  Using API domain: http://0.1:5050
  Unhandled exception. System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.

I've created a private static void ConfigureServices(IServiceCollection services, string baseAddress) and moved my service configuration there.
Do you know what might be the problem? Is there a way I can help / debug this?

PR in my repo with this prerender package:
michielpost/SkyDocs#15

Prerendered mode and static .html files not working properly

#25
It's a continuation of my previous ticket, which I thought I had solved, but I was wrong. I finally found the reason, I just don't know how to solve it yet:

First, I wanted to show that for some reason, static mode doesn't work. just prerendered it. in static mode, the page fails to load and does not load any of the head elements (title, description), but in prerendered, everything works normally. (I also don't know if this has anything to do with the problem)
image
image
image

but now comes the cause of all my problems: when you reload the page, a content is displayed temporarily until the final page is displayed. the problem is that this content is from my main page and not the page where I'm browsing. that's why google can only recognize the main page regardless of which page I test.
https://www.awesomescreenshot.com/video/14170343?key=b5b8793a5af4e3f1cb30bbde147da9d3

Need to clear application cache and then refresh to see the new changes on PWA enabled Blazor WebAssembly apps

From: @fingers10
(The original post is in the Issue #17)


@jsakamoto The fix provided in the service-worker.published.js,

Change the code inside the onFetch() function from const request = shouldServeIndexHtml ? 'index.html' : event.request; to const request = shouldServeIndexHtml ? (new URL(event.request.url)).pathname.replace(/\/$/, '') + '/index.html' : event.request;.

creates a cache issue.

Steps:

  1. Deploy a blazor wasm app with pwa enabled.
  2. Now make some changes in Index.razor screen.
  3. Now publish and deploy again and navigate to index url of the app.
  4. Note that new changes will not be reflected. You need to clear application cache and then refresh to see the new changes.

Video showing the problem:

  1. I have an intial version deployed.
  2. I made code change in Index.razor by adding <h1 style="background-color:yellow">Hello, Cache Problem</h1>.
  3. Published and deployed the app.
  4. Navigated to index url of the app.
  5. Refreshed and expecting to see new changes but nothing happens.
  6. Cleared cache and refreshed. Now I can see new code changes.
CacheProblem.mp4

BlazorWasmPrerenderingUrlPathToExplicitFetch - alternative suggestion

I wanted to suggest a tag change or just a new one with different behavior.

currently you have to type all the paths to be recognized. What if you have many paths to type or are they dynamic paths, or that change all the time?

so it would be interesting to read from the sitemap.xml file and process what is there.

404 Page Improvement?

Hi @jsakamoto, Is it possible to have actual 404 page in the designed in the app instead of copying index.html? what's your thoughts on this?

[Enhancement request] Generate sitemap.xml

Since this package is doing such a great job prerendering a Blazor WASM application, I wonder if it would be a lot of work to add generating of a sitemap.xml.

Because the package is already crawling all links in the app, it might not be too much work ;)

Build fails when building blazor wasm in AWS Amplify app

Dear @jsakamoto,

Recently I was writing an article on how to deploy and host blazor wasm app using AWS Amplify. While writing the tutorial, I noticed that build gets failed with this package. I was using ilovedotnet repo as an example,

image

Here is my build settings in AWS Amplify:

version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm install
            - curl -sSL https://dot.net/v1/dotnet-install.sh > dotnet-install.sh
            - chmod +x *.sh
            - ./dotnet-install.sh -c 7.0 -InstallDir ./dotnet7
            - ./dotnet7/dotnet --version
        build:
          commands: 
            - ./dotnet7/dotnet publish -c Release -o release
      artifacts:
        baseDirectory: /release/wwwroot
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
    appRoot: Web

Here is the build logs:

The build log
2023-05-21T12:48:25.885Z [INFO]: # Cloning repository: [email protected]:ILoveDotNet/ilovedotnet.git
2023-05-21T12:48:29.249Z [INFO]: 
2023-05-21T12:48:29.382Z [INFO]: Cloning into 'ilovedotnet'...
2023-05-21T12:48:29.382Z [INFO]: # Checking for Git submodules at: /codebuild/output/src200791159/src/ilovedotnet/.gitmodules
2023-05-21T12:48:29.390Z [INFO]: # Retrieving environment cache...
2023-05-21T12:48:29.434Z [WARNING]: ! Unable to write cache: {"code":"ERR_BAD_REQUEST","message":"Request failed with status code 404"})}
2023-05-21T12:48:29.434Z [INFO]: ---- Setting Up SSM Secrets ----
2023-05-21T12:48:29.434Z [INFO]: SSM params {"Path":"/amplify/don7yyyj7082c/main/","WithDecryption":true}
2023-05-21T12:48:29.467Z [WARNING]: !Failed to set up process.env.secrets
2023-05-21T12:48:29.469Z [INFO]: No live updates for this build run
2023-05-21T12:48:29.472Z [INFO]: # Retrieving cache...
2023-05-21T12:48:29.540Z [INFO]: # Retrieved cache
2023-05-21T12:49:04.797Z [INFO]: ## Starting Backend Build
                                 ## Checking for associated backend environment...
                                 ## No backend environment association found, continuing...
                                 ## Completed Backend Build
2023-05-21T12:49:04.800Z [INFO]: ## Starting Frontend Build
                                 # Starting phase: preBuild
                                 # Executing command: npm install
2023-05-21T12:49:12.273Z [WARNING]: npm WARN deprecated @npmcli/[email protected]: This functionality has been moved to @npmcli/fs
2023-05-21T12:49:16.472Z [INFO]: added 286 packages, and audited 287 packages in 11s
2023-05-21T12:49:16.474Z [INFO]: 35 packages are looking for funding
                                 run `npm fund` for details
                                 found 0 vulnerabilities
2023-05-21T12:49:16.484Z [INFO]: # Executing command: curl -sSL https://dot.net/v1/dotnet-install.sh > dotnet-install.sh
2023-05-21T12:49:16.949Z [INFO]: # Executing command: chmod +x *.sh
2023-05-21T12:49:16.951Z [INFO]: # Executing command: ./dotnet-install.sh -c 7.0 -InstallDir ./dotnet7
2023-05-21T12:49:18.152Z [INFO]: dotnet-install: Attempting to download using aka.ms link https://dotnetcli.azureedge.net/dotnet/Sdk/7.0.302/dotnet-sdk-7.0.302-linux-x64.tar.gz
2023-05-21T12:49:18.825Z [INFO]: dotnet-install: Extracting zip from https://dotnetcli.azureedge.net/dotnet/Sdk/7.0.302/dotnet-sdk-7.0.302-linux-x64.tar.gz
2023-05-21T12:49:24.441Z [INFO]: dotnet-install: Installed version is 7.0.302
2023-05-21T12:49:24.455Z [INFO]: dotnet-install: Adding to current process PATH: `/codebuild/output/src200791159/src/ilovedotnet/Web/dotnet7`. Note: This change will be visible only when sourcing script.
2023-05-21T12:49:24.455Z [INFO]: dotnet-install: Note that the script does not resolve dependencies during installation.
                                 dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install, select your operating system and check the "Dependencies" section.
                                 dotnet-install: Installation finished successfully.
2023-05-21T12:49:24.455Z [INFO]: # Executing command: ./dotnet7/dotnet --version
2023-05-21T12:49:25.494Z [INFO]: 7.0.302
2023-05-21T12:49:25.497Z [INFO]: # Completed phase: preBuild
                                 # Starting phase: build
2023-05-21T12:49:25.497Z [INFO]: # Executing command: ./dotnet7/dotnet publish -c Release -o release
2023-05-21T12:49:25.788Z [INFO]: 
2023-05-21T12:49:25.788Z [INFO]: Welcome to .NET 7.0!
                                 ---------------------
                                 SDK Version: 7.0.302
2023-05-21T12:49:25.789Z [INFO]: Telemetry
                                 ---------
                                 The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.
                                 
                                 Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry
                                 ----------------
                                 Installed an ASP.NET Core HTTPS development certificate.
                                 To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
                                 Learn about HTTPS: https://aka.ms/dotnet-https
                                 ----------------
                                 Write your first app: https://aka.ms/dotnet-hello-world
                                 Find out what's new: https://aka.ms/dotnet-whats-new
                                 Explore documentation: https://aka.ms/dotnet-docs
                                 Report issues and find source on GitHub: https://github.com/dotnet/core
                                 Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
                                 --------------------------------------------------------------------------------------
2023-05-21T12:49:26.076Z [INFO]: MSBuild version 17.6.1+8ffc3fe3d for .NET
2023-05-21T12:49:27.452Z [INFO]: Determining projects to restore...
2023-05-21T12:49:29.403Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/DesignPatternDemoComponents/DesignPatternDemoComponents.csproj (in 731 ms).
                                 Restored /codebuild/output/src200791159/src/ilovedotnet/DependencyInjectionDemoComponents/DependencyInjectionDemoComponents.csproj (in 731 ms).
                                 Restored /codebuild/output/src200791159/src/ilovedotnet/BlazorDemoComponents/BlazorDemoComponents.csproj (in 731 ms).
2023-05-21T12:49:29.423Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/SharedModels/SharedModels.csproj (in 9 ms).
2023-05-21T12:49:29.428Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/ReportDemoComponents/ReportDemoComponents.csproj (in 3 ms).
2023-05-21T12:49:29.433Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/SharedComponents/SharedComponents.csproj (in 16 ms).
2023-05-21T12:49:29.434Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/OOPSDemoComponents/OOPSDemoComponents.csproj (in 3 ms).
2023-05-21T12:49:29.436Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/Components/Components.csproj (in 786 ms).
2023-05-21T12:49:29.538Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/LINQDemoComponents/LINQDemoComponents.csproj (in 103 ms).
2023-05-21T12:49:30.231Z [INFO]: Restored /codebuild/output/src200791159/src/ilovedotnet/Web/Web.csproj (in 814 ms).
2023-05-21T12:49:36.081Z [INFO]: SharedModels -> /codebuild/output/src200791159/src/ilovedotnet/SharedModels/bin/Release/net7.0/SharedModels.dll
2023-05-21T12:49:36.087Z [INFO]: ReportDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/ReportDemoComponents/bin/Release/net7.0/ReportDemoComponents.dll
2023-05-21T12:49:36.089Z [INFO]: OOPSDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/OOPSDemoComponents/bin/Release/net7.0/OOPSDemoComponents.dll
                                 DesignPatternDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/DesignPatternDemoComponents/bin/Release/net7.0/DesignPatternDemoComponents.dll
2023-05-21T12:49:36.598Z [INFO]: DependencyInjectionDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/DependencyInjectionDemoComponents/bin/Release/net7.0/DependencyInjectionDemoComponents.dll
2023-05-21T12:49:38.014Z [INFO]: BlazorDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/BlazorDemoComponents/bin/Release/net7.0/BlazorDemoComponents.dll
2023-05-21T12:49:39.452Z [INFO]: SharedComponents -> /codebuild/output/src200791159/src/ilovedotnet/SharedComponents/bin/Release/net7.0/SharedComponents.dll
2023-05-21T12:49:39.474Z [INFO]: LINQDemoComponents -> /codebuild/output/src200791159/src/ilovedotnet/LINQDemoComponents/bin/Release/net7.0/LINQDemoComponents.dll
2023-05-21T12:49:40.065Z [INFO]: Components -> /codebuild/output/src200791159/src/ilovedotnet/Components/bin/Release/net7.0/Components.dll
2023-05-21T12:49:45.776Z [INFO]: 
                                 > [email protected] buildcss
                                 > npm run buildcss:prod
                                 
2023-05-21T12:49:46.065Z [INFO]: 
                                 > [email protected] buildcss:prod
                                 > npm run buildbulma && npx tailwindcss -i wwwroot/css/app.css -o wwwroot/css/app.min.css --minify
2023-05-21T12:49:46.065Z [INFO]: 
2023-05-21T12:49:46.362Z [INFO]: 
                                 > [email protected] buildbulma
                                 > node-sass --omit-source-map-url styles.css wwwroot/css/app.css
                                 
2023-05-21T12:49:46.721Z [INFO]: Rendering Complete, saving .css file...
2023-05-21T12:49:46.724Z [INFO]: Wrote CSS to /codebuild/output/src200791159/src/ilovedotnet/Web/wwwroot/css/app.css
2023-05-21T12:49:48.286Z [INFO]: 
2023-05-21T12:49:48.287Z [INFO]: Rebuilding...
2023-05-21T12:49:49.219Z [INFO]: 
                                 Done in 989ms.
2023-05-21T12:49:50.505Z [INFO]: Web -> /codebuild/output/src200791159/src/ilovedotnet/Web/bin/Release/net7.0/Web.dll
2023-05-21T12:49:50.505Z [INFO]: Web (Blazor output) -> /codebuild/output/src200791159/src/ilovedotnet/Web/bin/Release/net7.0/wwwroot
2023-05-21T12:49:51.001Z [INFO]: Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
2023-05-21T12:49:51.005Z [INFO]: Optimizing assemblies for size. This process might take a while.
2023-05-21T12:49:58.120Z [INFO]: BlazorWasmAntivirusProtection: Xor'ing .dlls
2023-05-21T12:49:58.122Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Blazor-Analytics.dll
2023-05-21T12:49:58.123Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/BlazorDemoComponents.dll
2023-05-21T12:49:58.125Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Components.dll
2023-05-21T12:49:58.126Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/DependencyInjectionDemoComponents.dll
2023-05-21T12:49:58.127Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/DesignPatternDemoComponents.dll
2023-05-21T12:49:58.132Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/FluentValidation.dll
2023-05-21T12:49:58.134Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Humanizer.dll
2023-05-21T12:49:58.137Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/LINQDemoComponents.dll
2023-05-21T12:49:58.139Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.AspNetCore.Components.dll
2023-05-21T12:49:58.140Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.AspNetCore.Components.Forms.dll
2023-05-21T12:49:58.141Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.AspNetCore.Components.Web.dll
2023-05-21T12:49:58.143Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.AspNetCore.Components.WebAssembly.dll
2023-05-21T12:49:58.144Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.CSharp.dll
2023-05-21T12:49:58.147Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Configuration.Abstractions.dll
2023-05-21T12:49:58.148Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Configuration.Binder.dll
2023-05-21T12:49:58.150Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Configuration.dll
2023-05-21T12:49:58.150Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Configuration.Json.dll
2023-05-21T12:49:58.152Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.DependencyInjection.Abstractions.dll
2023-05-21T12:49:58.153Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.DependencyInjection.dll
2023-05-21T12:49:58.155Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Logging.Abstractions.dll
2023-05-21T12:49:58.156Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Logging.dll
2023-05-21T12:49:58.157Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Options.dll
2023-05-21T12:49:58.158Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.Extensions.Primitives.dll
2023-05-21T12:49:58.159Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.JSInterop.dll
2023-05-21T12:49:58.160Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Microsoft.JSInterop.WebAssembly.dll
2023-05-21T12:49:58.160Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/netstandard.dll
2023-05-21T12:49:58.161Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/OOPSDemoComponents.dll
2023-05-21T12:49:58.162Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/ReportDemoComponents.dll
2023-05-21T12:49:58.163Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/SharedComponents.dll
2023-05-21T12:49:58.165Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/SharedModels.dll
2023-05-21T12:49:58.166Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Collections.Concurrent.dll
2023-05-21T12:49:58.168Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Collections.dll
2023-05-21T12:49:58.169Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Collections.Immutable.dll
2023-05-21T12:49:58.170Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Collections.NonGeneric.dll
2023-05-21T12:49:58.171Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Collections.Specialized.dll
2023-05-21T12:49:58.172Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.ComponentModel.Annotations.dll
2023-05-21T12:49:58.173Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.ComponentModel.dll
2023-05-21T12:49:58.174Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.ComponentModel.Primitives.dll
2023-05-21T12:49:58.175Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.ComponentModel.TypeConverter.dll
2023-05-21T12:49:58.177Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Console.dll
2023-05-21T12:49:58.178Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Core.dll
2023-05-21T12:49:58.180Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Diagnostics.TraceSource.dll
2023-05-21T12:49:58.182Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.dll
2023-05-21T12:49:58.183Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.IO.MemoryMappedFiles.dll
2023-05-21T12:49:58.185Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Linq.dll
2023-05-21T12:49:58.186Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Linq.Dynamic.Core.dll
2023-05-21T12:49:58.189Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Linq.Expressions.dll
2023-05-21T12:49:58.192Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Linq.Queryable.dll
2023-05-21T12:49:58.194Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Memory.dll
2023-05-21T12:49:58.195Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Net.Http.dll
2023-05-21T12:49:58.196Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Net.Primitives.dll
2023-05-21T12:49:58.197Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.ObjectModel.dll
2023-05-21T12:49:58.204Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Private.CoreLib.dll
2023-05-21T12:49:58.207Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Private.Uri.dll
2023-05-21T12:49:58.209Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Reflection.Emit.dll
2023-05-21T12:49:58.210Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Reflection.Emit.ILGeneration.dll
2023-05-21T12:49:58.212Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Reflection.Metadata.dll
2023-05-21T12:49:58.214Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Reflection.Primitives.dll
2023-05-21T12:49:58.215Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Runtime.dll
2023-05-21T12:49:58.217Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Runtime.InteropServices.JavaScript.dll
2023-05-21T12:49:58.218Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Text.Encodings.Web.dll
2023-05-21T12:49:58.221Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Text.Json.dll
2023-05-21T12:49:58.223Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Text.RegularExpressions.dll
2023-05-21T12:49:58.225Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Threading.dll
2023-05-21T12:49:58.227Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Threading.Tasks.Extensions.dll
2023-05-21T12:49:58.228Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/System.Web.HttpUtility.dll
2023-05-21T12:49:58.229Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Toolbelt.Blazor.HeadElement.Abstractions.dll
2023-05-21T12:49:58.230Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Toolbelt.Blazor.HeadElement.dll
2023-05-21T12:49:58.231Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Toolbelt.Blazor.HeadElement.Services.dll
2023-05-21T12:49:58.239Z [INFO]: BlazorWasmAntivirusProtection: Xor'ed dll /codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/linked/Web.dll
                                 BlazorWasmAntivirusProtection: Xor'ing .dlls finished
2023-05-21T12:49:58.362Z [INFO]: Compressing Blazor WebAssembly publish artifacts. This may take a while...
2023-05-21T12:50:30.013Z [INFO]: Web -> /codebuild/output/src200791159/src/ilovedotnet/Web/release/
2023-05-21T12:50:30.556Z [INFO]: It was not possible to find any compatible framework version
                                 The framework 'Microsoft.NETCore.App', version '7.0.0' was not found.
                                 - The following frameworks were found:
2023-05-21T12:50:30.557Z [INFO]: 3.1.32 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]
2023-05-21T12:50:30.558Z [INFO]: 
                                 You can resolve the problem by installing the specified framework and/or SDK.
                                 
                                 The specified framework can be found at:
                                 - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=7.0.0&arch=x64&rid=amzn.2-x64
2023-05-21T12:50:30.559Z [INFO]: /root/.nuget/packages/blazorwasmprerendering.build/2.0.0-preview.8/build/BlazorWasmPreRendering.Build.targets(62,5): error MSB3073: The command "dotnet "/root/.nuget/packages/blazorwasmprerendering.build/2.0.0-preview.8/build/../tools/net7.0/BlazorWasmPreRendering.Build.dll" -a "Web" -t "Web.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "/codebuild/output/src200791159/src/ilovedotnet/Web/release" -i "/codebuild/output/src200791159/src/ilovedotnet/Web/obj/Release/net7.0/." -m "Toolbelt.Blazor.HeadElement.ServerPrerendering,,7.1.0" -f "net7.0" --serviceworkerassetsmanifest "" --environment "Prerendering" --emulateauthme "true" --locale "en" -o "IndexHtmlInSubFolders"  -d -u "" -r "WebAssemblyPrerendered" --serverport "5050-5999" --bwapoptionsdllext "dat"" exited with code 150. [/codebuild/output/src200791159/src/ilovedotnet/Web/Web.csproj]
2023-05-21T12:50:30.606Z [ERROR]: !!! Build failed
2023-05-21T12:50:30.606Z [ERROR]: !!! Non-Zero Exit Code detected
2023-05-21T12:50:30.607Z [INFO]: # Starting environment caching...
2023-05-21T12:50:30.607Z [INFO]: # Environment caching completed
Terminating logging...

Please can you assist further on this?

The default fallback page is always loaded first, even if the browser's address bar indicates other paths.

From: @fingers10
(The original post is in the Issue #2)


@jsakamoto , I would like to understand more on flickering effect that occurs when prerendered site is loaded. Please can you assist me on this.

I have this repo - https://github.com/fingers10/WasmServerPrerender published to GitHub Pages using the below URL.

Here is the sample URL that I'm using for testing - https://fingers10.github.io/WasmServerPrerender/fetchdata

Steps I followed,

  1. When I load in incognito window in chrome - The flickering effect is minimal. Only Data Shown in the screen is flickering. This is fine.
  2. When I load in normal window in chrome - index.html in wwwroot loads and the actual page loads. Is this the expected behavior?
  3. When I reload in both normal and in incognito window in chrome - index.html in wwwroot loads and the actual page loads. Is this the expected behavior?

Here is the video showing the same.

ScreenRecorderProject6.mp4

Thank you for your support and teaching.

Publish failed with Visual Studio Publish

Dear @jsakamoto ,

I tried to publish a blazor wasm app from Visual Studio Folder Publish Profile and the publish failed. However it works perfectly with command line publish dotnet publish.

Here are the necessary details:

  1. new dotnet 7.0.10 blazor wasm project.
  2. add <PackageReference Include="BlazorWasmPreRendering.Build" Version="3.0.0-preview.2" /> package.
  3. Program.cs:
var builder = WebAssemblyHostBuilder.CreateDefault(args);

if (!builder.RootComponents.Any())
{
    builder.RootComponents.Add<App>("#app");
    builder.RootComponents.Add<HeadOutlet>("head::after");
}

ConfigureServices(builder.Services, builder.HostEnvironment.BaseAddress);

await builder.Build().RunAsync();

static void ConfigureServices(IServiceCollection services, string baseAddress)
{
    services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(baseAddress) });
}
  1. .csproj:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
	<LangVersion>latest</LangVersion>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
	<PublishTrimmed>true</PublishTrimmed>
	<BlazorEnableTimeZoneSupport>false</BlazorEnableTimeZoneSupport>
	<BlazorWebAssemblyLoadAllGlobalizationData>false</BlazorWebAssemblyLoadAllGlobalizationData>
	<BlazorWebAssemblyPreserveCollationData>false</BlazorWebAssemblyPreserveCollationData>
	<BlazorWasmPrerenderingDeleteLoadingContents>true</BlazorWasmPrerenderingDeleteLoadingContents>
	<!-- <BlazorWasmPrerenderingEnvironment>Production</BlazorWasmPrerenderingEnvironment> -->
	<BlazorWasmPrerenderingMode>WebAssemblyPrerendered</BlazorWasmPrerenderingMode>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="BlazorWasmPreRendering.Build" Version="3.0.0-preview.2" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.10" />
    <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.10" PrivateAssets="all" />
  </ItemGroup>

</Project>
  1. FolderPublish.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
  <PropertyGroup>
    <DeleteExistingFiles>true</DeleteExistingFiles>
    <ExcludeApp_Data>false</ExcludeApp_Data>
    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <PublishProvider>FileSystem</PublishProvider>
    <PublishUrl>bin\Release\net7.0\browser-wasm\publish\</PublishUrl>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <_TargetId>Folder</_TargetId>
    <SiteUrlToLaunchAfterPublish />
    <TargetFramework>net7.0</TargetFramework>
    <RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
    <ProjectGuid>385acf00-ae38-4e52-b370-b791fa4aacb2</ProjectGuid>
    <SelfContained>true</SelfContained>
  </PropertyGroup>
</Project>
  1. dotnet publish output
C:\Repos\Project\Web.Home>dotnet publish
MSBuild version 17.7.1+971bf70db for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
  Web.Home -> C:\Repos\Project\Web.Home\bin\Debug\net7.0\Web.Home.dll
  Web.Home (Blazor output) -> C:\Repos\Project\Web.Home\bin\Debug\net7.0\wwwroot
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Optimizing assemblies for size. This process might take a while.
  Optimizing assemblies for size may change the behavior of the app. Be sure to test after publishing. See: https://aka.ms/dotnet-illink
  Compressing Blazor WebAssembly publish artifacts. This may take a while...
  Web.Home -> C:\Repos\Project\Web.Home\bin\Debug\net7.0\publish\
  Start fetching...[http://127.0.0.1:5050]
  Getting http://127.0.0.1:5050/...
  [INFORMATION] The requested URL (javascript: void(0)) was not navigatable.
  Fetching complete.
  1. Visual Studio Folder Publish

image

  1. Error log:
Web.Home -> C:\Repos\Project\Web.Home\obj\Release\net7.0\browser-wasm\PubTmp\Out\
"" "C:\Users\Abdul Rahman\.nuget\packages\blazorwasmprerendering.build\3.0.0-preview.2\build\../tools/net7.0/BlazorWasmPreRendering.Build.dll" --assemblyname "Web.Home" -t "Web.Home.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "C:\Repos\Project\Web.Home\obj\Release\net7.0\browser-wasm\PubTmp\Out" -i "C:\Repos\Project\Web.Home\obj\Release\net7.0\." --assemblydir "C:\Repos\Project\Web.Home\bin\Release\net7.0" -m "" -f "net7.0" --serviceworkerassetsmanifest "" --environment "Prerendering" --emulateauthme "true" --locale "en" -o "IndexHtmlInSubFolders"  -d -u "" -r "WebAssemblyPrerendered" --serverport "5050-5999" --bwapoptionsdllext "bin"
'""' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\Abdul Rahman\.nuget\packages\blazorwasmprerendering.build\3.0.0-preview.2\build\BlazorWasmPreRendering.Build.targets(63,5): Error MSB3073: The command """ "C:\Users\Abdul Rahman\.nuget\packages\blazorwasmprerendering.build\3.0.0-preview.2\build\../tools/net7.0/BlazorWasmPreRendering.Build.dll" --assemblyname "Web.Home" -t "Web.Home.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "C:\Repos\Project\Web.Home\obj\Release\net7.0\browser-wasm\PubTmp\Out" -i "C:\Repos\Project\Web.Home\obj\Release\net7.0\." --assemblydir "C:\Repos\Project\Web.Home\bin\Release\net7.0" -m "" -f "net7.0" --serviceworkerassetsmanifest "" --environment "Prerendering" --emulateauthme "true" --locale "en" -o "IndexHtmlInSubFolders"  -d -u "" -r "WebAssemblyPrerendered" --serverport "5050-5999" --bwapoptionsdllext "bin"" exited with code 9009.

2>Build failed. Check the Output window for more details.

Please let me know if any other details are required.

Finds url's not linked to in my code and which return an error

Publishing to a folder fails for me as it tries to crawl pages that from a routing point of view are possible but are not linked to anywhere in my app. Therefore, it errors with the following message:
[ERROR] The HTTP status code was not OK. (it was (500)InternalServerError.)

My routing is similar to the following:

@page "/" @page "/calculate/{valuetype}" @page "/calculate/{valuetype}/from/{value1}" @page "/calculate/{valuetype}/from/{value1}/to/{value2}"

The urls I link to have the value1 and value2 parameters determined by the valuetype parameter. So value1 and value2 will be from one predefined list or from another one, depending what the valuetype parameter is.

How does it determine which pages to crawl - should it only be crawling links it finds in my front end or does it take them from somewhere else? And if it takes from somewhere else, how can I make it ignore certain url's that I know aren't meant to work and are not linked to anywhere?

Hope that makes sense and thanks for your work on this!

Page not listed not getting pre-rendered

Hi, me again!

This time I noticed something different. This package works perfectly fine for pages that are added as a link in the menu or something.

However when the page is not linked in any menu - it's not getting pre-rendered. I understand that this package crawls page and finds links, much like search engine crawlers.

Is there any possibility that such "easter egg" pages get pre-rendered? My 2 ideas of how it could be done: via Blazor's [Route] attribute (I do it that way for my sitemap generator), or if we have to explicitly list each of these pages in some config. The latter is likely more flexible (support for query/parameterized links etc), but less automatic.

For now I can also work it around by using pre-rendering hosting environment, but been wondering if something like this would be possible.

BlazorWasmAntivirus Support is needed after .NET 8?

@jsakamoto Thank you for your great works with this library.

I would like to get your recommendation on BlazorWasmAntiVirus support after .NET 8. Because as per the documentation - https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-preview-4/#webcil-packaging-for-blazor-webassembly-apps webcil format will be enabled from .NET 8 in Blazor WASM.

So do we still need BlazorWasmAntiVirus handling in this package? Please share your thoughts.

Publish failed

Hi there, I tried to install this package to https://github.com/ant-design-blazor/ant-design-blazor, but an exception occurred during the publishing process.

AntDesign.Docs.Wasm -> E:\antd\ant-design-blazor\site\AntDesign.Docs.Wasm\obj\Release\net5\browser-wasm\PubTmp\Out\
dotnet "C:\Users\shunj\.nuget\packages\blazorwasmprerendering.build\1.0.0-preview.4.1\build\../tools/net5/blazorwasm-prerendering-server.dll" -a "AntDesign.Docs.Wasm" -t "AntDesign.Docs.Wasm.App" -s "#app" -p "E:\antd\ant-design-blazor\site\AntDesign.Docs.Wasm\bin\Release\net5\publish" -i "E:\antd\ant-design-blazor\site\AntDesign.Docs.Wasm\obj\Release\net5\." -m "" -f "net5"
Could not execute because the specified command or file was not found.
Possible reasons for this include:
  * You misspelled a built-in dotnet command.
  * You intended to execute a .NET program, but dotnet-C:\Users\shunj\.nuget\packages\blazorwasmprerendering.build\1.0.0-preview.4.1\build\../tools/net5/blazorwasm-prerendering-server.dll does not exist.
  * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
C:\Users\shunj\.nuget\packages\blazorwasmprerendering.build\1.0.0-preview.4.1\build\BlazorWasmPreRendering.Build.targets(33,5): Error MSB3073: The command "dotnet "C:\Users\shunj\.nuget\packages\blazorwasmprerendering.build\1.0.0-preview.4.1\build\../tools/net5/blazorwasm-prerendering-server.dll" -a "AntDesign.Docs.Wasm" -t "AntDesign.Docs.Wasm.App" -s "#app" -p "E:\antd\ant-design-blazor\site\AntDesign.Docs.Wasm\bin\Release\net5\publish" -i "E:\antd\ant-design-blazor\site\AntDesign.Docs.Wasm\obj\Release\net5\." -m "" -f "net5"" exited with code 1.

<HeadContent> rendered twice when Blazor runs

I use <HeadContent> on every page to control what appears there. This is pre-rendered absolutely correctly, and saved between %%-PRERENDERING-HEADOUTLET-BEGIN-%% and %%-PRERENDERING-HEADOUTLET-END-%% comments. All great, this library works and is so far the easiest solution I've found.

Once I serve the website, open in browser, F12 and look at DOM, these tags are rendered twice, and the pre-rendered ones do not update on page change. This is of course understandable, due to how .NET 6 <HeadContent> works.

With most bots it'll be no issue but some like google actually wait for WASM to load, so I was wondering if there is any recommended way to remove the pre-rendered head content. I do not mind if it is something that I have to call myself or something - and I actually expect that it'd need to be approached this way. However having even that kind of solution would be great - if it is possible at all, of course.

Visual Studio Publish results in 404 error for images in webp format

Hi @jsakamoto

I'm using BlazorWasmPreRendering.Build - 3.1.0-preview.4 and did a folder publishing of ilovedotnet repo in Visual Studio and deployed to IIS. When I loaded it in browser the images are not displayed and shows 404 error. The images are in webp format.

The images in png format are loaded but webp is not:

image

The images are downloaded and here is the source tab screenshot from browser.

image

Here is the console error output from browser:

image

But this works in GitHub publish. Looks like something is wrong when Published using Visual Studio. Please assist on what I'm missing,

Thanks,
Abdul Rahman

Web worker compatibility issue

Apps with prerendering crash when starting a web worker using the library SpawnDev.BlazorJS, because BlazorWasmPreRendering.Build attempts to call the document.createNodeIterator function at startup, which is not available in web workers:

logging.ts:24 MONO_WASM: Failed to invoke 'afterStarted' on library initializer '../_content/BlazorWasmPreRendering.Build/BlazorWasmPreRendering.Build.lib.module.js': TypeError: n.createNodeIterator is not a function

Can be fixed by adding a check before calling document.createNodeIterator in the file BlazorWasmPreRendering.Build.lib.module.js, for example:

if (typeof document.createNodeIterator !== 'function') return;

However I'm not familiar with BlazorWasmPreRendering.Build, and I'm not sure if this is the best place to check if we are in a web worker.

Prerendering doesn't render Meta and Link tags

I'm having the below content in my Index.razor. I'm using <Meta> and <Link> from Toolbelt.Blazor.HeadElement Nuget

<Meta Property="description" Content="@Description" />
<Meta Property="keywords" Content="Keywords" />
<Meta Property="url" Content="@BaseUrl" />
<Meta Property="identifier-URL" Content="@BaseUrl" />
<Meta Property="og:site_name" Content="@Title" />
<Meta Property="og:type" Content="website" />
<Meta Property="og:title" Content="@Title" />
<Meta Property="og:description" Content="@Description" />
<Meta Property="og:url" Content="@BaseUrl" />
<Meta Property="twitter:card" Content="summary" />
<Meta Property="twitter:title" Content="@Title" />
<Meta Property="twitter:description" Content="@Description" />
<Meta Property="twitter:url" Content="@BaseUrl" />
<Link Rel="sitemap" Href="@($"{BaseUrl}sitemap.xml")" />
<Link Rel="alternate" Href="@($"{BaseUrl}atom.xml")" />
<Link Rel="alternate" Href="@BaseUrl" />
<Link Rel="alternate" Href="@BaseUrl" />
<Link Rel="canonical" Href="@BaseUrl" />
<Link Rel="index" Href="@BaseUrl" />
<HeadContent>
    @(new MarkupString(
    $@"<script type=""application/ld+json"">
    {{
        ""@context"": ""https://schema.org"",
        ""@type"": ""WebSite"",
        ""publisher"": {{
            ""@type"": ""Organization"",
            ""name"": ""{Title}"",
            ""url"": ""{BaseUrl}"",
            ""logo"": {{
                ""@type"": ""ImageObject"",
                ""url"": ""{BaseUrl}favicon.ico"",
                ""width"": 16,
                ""height"": 16
            }}
        }},
        ""url"": ""{BaseUrl}"",
        ""mainEntityOfPage"": {{
            ""@type"": ""WebPage"",
            ""@id"": ""{BaseUrl}""
        }},
        ""description"": ""{Description}""
    }}
    </script>"))
</HeadContent>

After prerendering, index.html contains only content inside <HeadOutlet>. Remaining <Meta> and <Link> tags are not available in index.html.

Support for .NET 8 .wasm Lazy Loaded Assemblies

Dear @jsakamoto ,

Now that .NET 8 is generally available to public, I would like to understand if this library supports .NET 8 Blazor WASM Projects? I tried publishing .NET blazor wasm project with Lazy Loading. But got the following error when opened in browser. Looks like .NET 8 has changed lazy loaded assembly extension to .wasm. Here is the docs reference - https://learn.microsoft.com/en-us/aspnet/core/blazor/webassembly-lazy-load-assemblies?view=aspnetcore-8.0

Repository to reproduce this issue: https://github.com/ILoveDotNet/ilovedotnet

image

Please can you assist me on this?

publish and deploy by action from github - Oryx has failed to build the solution.

I use static web app on azure and publish through github action.

this is the error i get:
/var/nuget/blazorwasmprerendering.build/2.0.0-preview.4/build/BlazorWasmPreRendering.Build.targets(58,5): error MSB3073: The command "dotnet "/var/nuget/blazorwasmprerendering.build/2.0.0-preview.4/build/../tools/net6.0/BlazorWasmPreRendering.Build.dll" -a "SD.WEB" -t "SD.WEB.App" --selectorofrootcomponent "#app,app" --selectorofheadoutletcomponent "head::after" -p "/bin/staticsites/ss-oryx/app" -i "/github/workspace/SD.WEB/obj/Release/net6.0/." -m "" -f "net6.0" --serviceworkerassetsmanifest "service-worker-assets.js" -e "Prerendering" --locale "en" -o "IndexHtmlInSubFolders" -u "" -r "Static" --serverport "5050-5999" --bwapoptionsxorkey """ exited with code 1. [/github/workspace/SD.WEB/SD.WEB.csproj] | 1 | Please build your app locally before publishing. | https://docs.microsoft.com/en-us/azure/app-service/configure-language-dotnetcore?pivots=platform-linux

my project:
https://github.com/drma-dev/SD

Localization did not work after publish the project.

Hi,
my Blazor Wasm has 2 resource files representing 2 languages Thai, and English.
I have SetDefaultCulture method to set the default language to Thai when the application first starts.

public async static Task SetDefaultCulture(this WebAssemblyHost host)
    {
      ILocalStorageService localStorage =  host.Services.GetRequiredService<ILocalStorageService>();
      string getCulture =  await localStorage.GetItemAsStringAsync("Culture");
      CultureInfo culture;
      if (getCulture != null)
      {
        culture = new CultureInfo(getCulture);
      }
      else
      {
        await localStorage.SetItemAsStringAsync("Culture", "th-TH");
        culture = new CultureInfo("th-TH");
      }
      CultureInfo.DefaultThreadCurrentCulture = culture;
      CultureInfo.DefaultThreadCurrentUICulture = culture;
    }

but when I publish the project, the language in static files are in English.
How can I set pretender to render Thai language and setting default culture doesn't really work?

Loading other config files

Hey, me yet again!

Currently the package loads wwwroot/appsettings.json when pre-rendering. This is absolutely fine for majority of scenarios, and in general, is good enough.

However I was thinking - it'd be nice if it'd be possible to load additional config files (IF they exist - cause they might not!), like:

  • wwwroot/appsettings.<environment>.json (for example wwwroot/appsettings.Prerendering.json);
  • any other manually specified config file (the approach like with #8 would be absolutely good enough).

The reason for first is that having different settings during prerendering stage could actually be useful in some scenarios.
The reason why I want to do second is that I want to split some files, because they'll contain a lot of content.
In my case loading other files than json is not needed at all, but could be quite handy when it comes to library flexibility - if it doesn't add too much complexity, of course.

This suggestion absolutely is not a pressing matter, as these things can be worked around - but it'd definitely be a nice-to-have when you have time to add them.

issues with google index

It's probably not something specific to that component. but since I imagine that you created this to solve the reading by the search robots, then:

even after using your component and having changed several things in the project, I still can't get it to be processed by google correctly.

I made this component so that all pages could have a title, description, canonical url, etc.
https://github.com/drma-dev/SD/blob/master/SD.WEB/Shared/SeoHeader.razor

image
but google cannot read this information (title, description and canonical url in blanks). the only way google can read it is if i leave the title in the index.html, but that makes everything unfeasible, because after that it can't recognize any other page besides the index.

live test tab:
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.