Ralat di Golang kepada Penyusunan Wasm dengan Wasmtime dan Wasm3
Menyusun kod Golang ke WebAssembly (Wasm) menggunakan GOOS=js GOARCH=wasm go build -o main.wasm boleh membawa kepada ralat apabila melaksanakan dengan Wasmtime atau Wasm3. Mari kita siasat ralat dan teroka penyelesaian yang mungkin.
Ralat Wasmtime:
Error: failed to run main module `main.wasm` Caused by: 0: failed to instantiate "main.wasm" 1: unknown import: `go::debug` has not been defined
Ralat menunjukkan bahawa Wasmtime menghadapi import yang tidak dapat diselesaikan (go::debug) semasa masa jalan , mencadangkan bahawa modul Wasm yang disusun tidak mempunyai definisi untuk import ini.
Ralat Wasm3:
Error: function lookup failed ('_start')
Wasm3 menghadapi ralat semasa carian fungsi, mencadangkan bahawa Wasm modul tidak mentakrifkan fungsi titik masuk (_start).
Penyelesaian:
Menurut respons yang diberikan, pendekatan asal mempunyai had apabila menyusun Golang ke Wasm di luar pelayar. Pilihan berikut dicadangkan untuk menyelesaikan ralat:
Gunakan Node.js dengan wasm_exec.js shim:
node wasm_exec.js main.wasm
Ini membolehkan untuk pelaksanaan di luar persekitaran penyemak imbas.
Kompilasi dengan sokongan TinyGo dan Wasi:
tinygo build -target=wasi -o main.wasm main.go
TinyGo menyediakan sokongan untuk kompilasi kepada Wasm dengan Wasi , yang sepatutnya berfungsi dengan Wasmtime.
Kompilasi Golang eksperimen dengan sokongan Wasm:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
Ini memerlukan penyusunan Go daripada sumber dan mendayakan ciri percubaan terkini, tetapi harus membenarkan pelaksanaan terus dengan Wasmtime.
Untuk ralat khusus ini, dicadangkan untuk mencuba pilihan 1 (menggunakan Node.js dengan wasm_exec.js), atau pilihan 2 (menyusun dengan sokongan TinyGo dan Wasi) jika berjalan bersendirian dengan Wasmtime diingini.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Semasa Menyusun Golang ke Wasm dengan Wasmtime dan Wasm3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!