BlazorMonaco
BlazorMonaco copied to clipboard
Not working when debugging, but works after publishing and running executable
I am using Blazor Monaco in a Blazor Server app and experiencing some weird behaviour. When running in Visual Studio, I am getting errors, but when I publish the app, the package works.
When running the project in Visual Studio Blazor Monaco fails to load and I get the follow exception in the console.
fail: Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost[111]
Unhandled exception in circuit '3etjGIvbTp7lHvTo_xh410bBhhmS8PskWVf_CDdaXdw'.
Microsoft.JSInterop.JSException: Could not find 'blazorMonaco.editor.create' ('blazorMonaco' was undefined).
Error: Could not find 'blazorMonaco.editor.create' ('blazorMonaco' was undefined).
at https://localhost:7074/_framework/blazor.server.js:1:497
at Array.forEach (<anonymous>)
at s.findFunction (https://localhost:7074/_framework/blazor.server.js:1:465)
at E (https://localhost:7074/_framework/blazor.server.js:1:2611)
at https://localhost:7074/_framework/blazor.server.js:1:3499
at new Promise (<anonymous>)
at Ft.beginInvokeJSFromDotNet (https://localhost:7074/_framework/blazor.server.js:1:3480)
at Ft._invokeClientMethod (https://localhost:7074/_framework/blazor.server.js:1:75072)
at Ft._processIncomingData (https://localhost:7074/_framework/blazor.server.js:1:72696)
at Ft.connection.onreceive (https://localhost:7074/_framework/blazor.server.js:1:67009)
at Microsoft.JSInterop.JSRuntime.InvokeAsync[TValue](Int64 targetInstanceId, String identifier, Object[] args)
at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync(IJSRuntime jsRuntime, String identifier, Object[] args)
at BlazorMonaco.Helpers.JsRuntimeExt.SafeInvokeAsync(IJSRuntime jsRuntime, String identifier, Object[] args)
at BlazorMonaco.Editor.Global.Create(IJSRuntime jsRuntime, String domElementId, StandaloneEditorConstructionOptions options, EditorOverrideServices overrideServices, DotNetObjectReference`1 dotnetObjectRef)
at BlazorMonaco.Editor.StandaloneCodeEditor.OnAfterRenderAsync(Boolean firstRender)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
This is my _Host.cshtml
@page "/"
@using Microsoft.AspNetCore.Components.Web
@namespace CalculationSandbox.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="~/" />
<link href="app.css" rel="stylesheet" />
<link rel="icon" type="image/png" href="favicon.png"/>
<component type="typeof(HeadOutlet)" render-mode="ServerPrerendered" />
</head>
<body>
<component type="typeof(App)" render-mode="ServerPrerendered" />
<script src="_content/BlazorMonaco/jsInterop.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/loader.js"></script>
<script src="_content/BlazorMonaco/lib/monaco-editor/min/vs/editor/editor.main.js"></script>
<script src="_framework/blazor.server.js"></script>
</body>
</html>
However, when I publish the app and run the published executable Blazor Monaco works without any issues. I have tried the following
- Uninstalling and re-installing the package
- Deleting the
bin
andobj
folders in the project
There was another similar issue about static web assets not being available at the _content/BlazorMonaco/
path. That seems to be related to the app's configuration. The Microsoft doc here has some suggestions which may help.