Blazor Web 应用程序无法在外部 js 文件中找到 js 函数

问题描述 投票:0回答:1

这是我的存储库,其中包含重现问题的新模板。 在按钮单击处理程序的计数器页面上添加了 JS 互操作调用,该调用通常应调用位于 wwwroot/JSFile.js 中名为“sayHello()”的 js 函数

https://github.com/konst-sh/JSFunctionNotFound/tree/master

我在浏览器控制台中不断收到此错误:

Microsoft.JSInterop.JSException:找不到“sayHello”(“sayHello”未定义)。

脚本引用似乎正确位于标签内的 App.razor 文件中:

<script src="JSFile.js"></script>

如果将相同的功能添加到脚本标记内的 Counter.razor 页面,它将按预期工作

<script>
function sayHello() {
    console.log("Hello from JSFile");
}
</script>
blazor
1个回答
0
投票

首先,您应该在此处发布详细信息,或者在您引用的 GitHub 中上传完整或部分项目,直到我们为您猜测最佳解决方案。

正如您所提到的,它找不到文件,这意味着它找不到路径或在某种项目设置中未设置到正确的路径。

我建议使用 C# 代码,如 Directory(System.IO.Directory) 类来定位静态根目录(wwwroot) 中的确切路径,并放入一些变量或直接在代码中调用。

类似这样的事情

@{
    string jsfilePath = $"{System.IO.Path.Combine(Directory.GetCurrentDirectory(), "wwwroot")}/JSFile.js";

}
<script src=@jsfilePath></script>

我不确定 /JSFile.js 或 //JSFile.js。

希望这对您有帮助🌹🌹🌹。 但同样需要更多细节。

© www.soinside.com 2019 - 2024. All rights reserved.