Erros na compilação de Golang para Wasm com Wasmtime e Wasm3
Compilação de código Golang para WebAssembly (Wasm) usando GOOS=js GOARCH=wasm go build -o main.wasm pode causar erros ao executar com Wasmtime ou Wasm3. Vamos investigar os erros e explorar possíveis soluções.
Wasmtime Error:
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
O erro indica que o Wasmtime encontra uma importação não resolvida (go::debug) durante o tempo de execução, sugerindo que o módulo Wasm compilado não possui uma definição para isso importar.
Erro Wasm3:
Error: function lookup failed ('_start')
Wasm3 encontra um erro durante a pesquisa de função, sugerindo que o módulo Wasm não define uma função de ponto de entrada (_start).
Solução:
De acordo com a resposta fornecida, a abordagem original tem limitações ao compilar Golang para Wasm fora do navegador. As seguintes opções são sugeridas para resolver os erros:
Use Node.js com o shim wasm_exec.js:
node wasm_exec.js main.wasm
Isso permite a execução fora do navegador ambiente.
Compile com suporte para TinyGo e Wasi:
tinygo build -target=wasi -o main.wasm main.go
TinyGo fornece suporte para compilação para Wasm com Wasi, que deve funcionar com Wasmtime.
Compilação experimental de Golang com suporte a Wasm:
GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm
Isso requer a compilação do Go a partir dos fontes e a ativação dos recursos experimentais mais recentes, mas deve permitir a execução direta com Wasmtime.
Para esses erros específicos, sugere-se tentar a opção 1 (usando Node.js com wasm_exec.js) ou a opção 2 (compilando com suporte TinyGo e Wasi) se estiver executando independente com Wasmtime é desejado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3