这是我的存储库,其中包含重现问题的新模板。 在按钮单击处理程序的计数器页面上添加了 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>
首先,您应该在此处发布详细信息,或者在您引用的 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。
希望这对您有帮助🌹🌹🌹。 但同样需要更多细节。