我正在使用 Blazor WASM 和 JavaScript for Web API。我有这个错误:
错误:找不到"AddDb"("AddDb"未定义)。
JavaScript
export function AddDB() {
const DB_NAME = 'product';
const DB_VERSION = 1; // Use a long long for this value (don't use a float)
const DB_STORE_NAME = 'MHCproduct';
var db;
// Used to keep track of which view is displayed to avoid uselessly reloading it
var current_view_pub_key;
function openDb() {
console.log("openDb ...");
var req = indexedDB.open(DB_NAME, DB_VERSION);
}
}
剃须刀页面
<div class="row">
<span class="cuscol-100" style="text-align:center;background-color:white">
<button class="btn btn-primary" style="width:100%" @onclick="()=>StartDB(elementX)">Calculate</button>
</span>
</div>
@code{
string name = string.Empty;
IJSObjectReference module;
private ElementReference elementX;
async Task StartDB(ElementReference element)
{
module = await JSRuntime.InvokeAsync<IJSObjectReference>("import", "./js/JavaScript.js");
await module.InvokeVoidAsync("AddDb", element);
Console.WriteLine("Berjaya");
}
}
现在已经没有使用 JSInterop了很长时间了,但是是否有可能因为您输入参数而发生错误,即使 JS 函数不需要参数? 现在无法检查,但可能会await module.InvokeVoidAsync("AddDb", element);
更改为await module.InvokeVoidAsync("AddDb");
.
其他可能的解决方案:是否向索引.html文件添加了<script src="xyz.js"></script>
?
只是偶然发现了类似的问题。不确定如何解决它,但我这样做是为了解决问题:
在 Visual Studio 中的"解决方案资源管理器"上:右键单击解决方案,然后选择"清理解决方案"。
此链接中的类似问题: Blazor Component Javascript Errors (Microsoft.JSInterop.JSException)