我有一个带有 js 文件的 Razor 类库 [My.Widget]:
小部件.js
var Widget = (function () {
function show() {
alert("Show");
}
return {
show: show
}
}());
在我的 WebAssembly 中,我已经加载了 js 文件:
索引.html
<script src="_content/My.Widget/widget.js"></script>
我可以在浏览器开发工具中看到它正确加载。
RCL 有一个互操作文件:
public class WidgetJsInterop : IAsyncDisposable
{
readonly Lazy<Task<IJSObjectReference>> _moduleTask;
public WidgetJSInterop(IJSRuntime jsRuntime)
{
_moduleTask = new(() => jsRuntime.InvokeAsync<IJSObjectReference>(
"import", "./_context/My.Widget/widget.js").AsTask());
}
public async ValueTask Show()
{
IJSObjectReference? module = await _moduleTask.Value;
await module.InvokeVoidAsync("Widget.show");
}
}
我在上面的互操作类中成功调用了 Show 方法,我可以看到 js 已加载到开发工具中,但出现异常:
Microsoft.JSInterop.JSException:找不到“Widget.show”(“Widget”未定义)。
有任何想法吗?