我試圖創建一個Razor Class Library暴露 1 個 js 函式的函式。我的問題是 webpack 洗掉了我在最終包檔案中匯出的函式。
index.js
import * as myLib from "someLib"
export function connect(params) {
// function logic omitted for clarity
}
這就是我想要使用 js 代碼的方式
using MyComponent.Common;
using Microsoft.JSInterop;
namespace MyComponent.Services
{
/// <inheritdoc />
public class MyService : IMyService
{
private readonly Lazy<Task<IJSObjectReference>> _myWrapper;
public MyService(IJSRuntime jsRuntime)
{
_myWrapper = new Lazy<Task<IJSObjectReference>>(() =>
jsRuntime.InvokeAsync<IJSObjectReference>("import", "./_content/MyComponent/index.bundle.js")
.AsTask());
}
/// <inheritdoc />
public async Task Connect(params)
{
if (_myWrapper is null)
{
throw new InvalidOperationException("Wrapper is not initialized");
}
IJSObjectReference module = await _myWrapper.Value;
await module.InvokeVoidAsync("connect", params);
}
}
}
我得到的例外是(正如預期的那樣,因為 index.bundle.js 中沒有暴露連接函式)
Could not find 'connect' ('connect' was undefined).
Error: Could not find 'connect' ('connect' was undefined).
at https://localhost:7134/_framework/blazor.webassembly.js:1:328
at Array.forEach (<anonymous>)
at a.findFunction (https://localhost:7134/_framework/blazor.webassembly.js:1:296)
at _ (https://localhost:7134/_framework/blazor.webassembly.js:1:2437)
at https://localhost:7134/_framework/blazor.webassembly.js:1:3325
at new Promise (<anonymous>)
at Object.beginInvokeJSFromDotNet (https://localhost:7134/_framework/blazor.webassembly.js:1:3306)
at Object.St [as invokeJSFromDotNet] (https://localhost:7134/_framework/blazor.webassembly.js:1:59849)
at _mono_wasm_invoke_js_blazor (https://localhost:7134/_framework/dotnet.6.0.2-mauipre.1.22102.15.kf8l5pkaed.js:1:194973)
at wasm://wasm/00970ba6:wasm-function[219]:0x1a129
uj5u.com熱心網友回復:
我剛剛找到了解決此問題的方法。在index.js我插入以下行的末尾
window.connect = connect;
這使得 webpack 不會洗掉 connect 函式,但是它仍然無法使用 via,IJSObjectReference因為它希望函式像這樣被匯出,export function connect所以我在 final 末尾插入了另一行index.bundle.js
export function connect(params) { window.connect(params); }
我還必須在我的 csproj 檔案上禁用自動 webpack 構建,因為每次構建后我的修改都會丟失,僅此而已,之后我就可以正常使用我的功能了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/454074.html
標籤:javascript C# 。网 网页包 西装外套
