这应该很简单,但我真的找不到一种方法来将.js添加到项目中. 我用如下所示的简单代码创建了一个.razor页面:


@page "/text"
@rendermode InteractiveAuto
@inject IJSRuntime JsRuntime 
@implements IAsyncDisposable 


<h2>Test  @text</h2>
<button @onclick="LoadText">Load</button>

@code
{
    string text = "";
    private IJSObjectReference module;

    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (firstRender)
        {
            module = await JsRuntime.InvokeAsync<IJSObjectReference>(
                "import", "./js/index.js");
        }
    }
    private async Task LoadText()
    {
        text = await module.InvokeAsync<string>("logToConsole");
    }
}

并在名为js的wwwroot目录中创建了一个带有我放入的函数的.js文件:

export function logToConsole() {
    return "My text"
}

而不是追加文本,它抛出一个错误:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Failed to resolve module specifier '.js/index.js'
      TypeError: Failed to resolve module specifier '.js/index.js'
          ...

try 更改路径,try 所有渲染模式,但无济于事.

推荐答案

我注意到您使用的是InteractiveAuto,所以我推断您使用的是Blazor Web应用程序并 Select 了自动模板,否则我们应该会看到下面的错误.

enter image description here

我做了一次测试,但没有用你的代码重现你的问题.我认为./js/index.js也应该是正确的,如果它放在wwwroot文件夹中.因为提到了this section

当应用程序发布时,框架会自动将 指向Web根目录的脚本.脚本被移到bin/Release/{Target 框架MONIKER}/publish/wwwroot/{PATH}/Pages/{COMPONENT}.razor.js

因此,我假设该问题可能是由浏览器缓存引起的,并建议清除缓存,然后进行测试.感谢操作员确认此方法确实有效.

enter image description here

Csharp相关问答推荐

将实例绑定方法传递到列表foreach

List T.AddRange在传递ConcurrentDictionary作为参数时引发ArgumentExcellent

需要更改哪些内容才能修复被覆盖的财产中的无效警告CS 8765?

使用其可能实现的基类和接口的属性的方法

如何将字节数组转换为字符串并返回?

将列表字符串映射为逗号分隔字符串<>

实体框架核心上是否支持使用NPGSQL的字符串聚合?

如何将不同类型的扩展参数的javascript函数转换成C#风格?

WeakReference未被垃圾收集

从.Net 6 DLL注册和检索COM对象(Typelib导出:类型库未注册.(异常来自HRESULT:0x80131165))

由于POST中的应用程序/JWT,出现不支持的内容类型异常

TeamsBot SendActivityActivityTypes与ActivityTypes同步.键入不再起作用

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

如何从非异步任务中正确返回TypeResult

C#命名管道-编码错误?

EF Core 7-忽略模型绑定中的虚拟属性

当我手动停止和关闭系统并打开时,Windows服务未启动

使用ITfoxtec.Identity.Saml2解析相同键多值SAML 2声明

与另一个对象位于同一位置的对象具有不同的变换位置

自定义ConsoleForMatter中的DI/Http上下文