"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo resolver errores al compilar Golang en Wasm con Wasmtime y Wasm3?

¿Cómo resolver errores al compilar Golang en Wasm con Wasmtime y Wasm3?

Publicado el 2024-11-08
Navegar:903

How to Resolve Errors When Compiling Golang to Wasm with Wasmtime and Wasm3?

Errores en la compilación de Golang a Wasm con Wasmtime y Wasm3

Compilación de código de Golang a WebAssembly (Wasm) usando GOOS=js GOARCH=wasm go build -o main.wasm puede provocar errores al ejecutar con Wasmtime o Wasm3. Investiguemos los errores y exploremos posibles soluciones.

Error de 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

El error indica que Wasmtime encuentra una importación no resuelta (go::debug) durante el tiempo de ejecución, lo que sugiere que el módulo Wasm compilado carece de una definición para esto importar.

Error de Wasm3:

Error: function lookup failed ('_start')

Wasm3 encuentra un error durante la búsqueda de funciones, lo que sugiere que el módulo Wasm no define una función de punto de entrada (_start).

Solución:

Según la respuesta proporcionada, el enfoque original tiene limitaciones al compilar Golang en Wasm fuera del navegador. Se sugieren las siguientes opciones para resolver los errores:

  1. Usar Node.js con la corrección wasm_exec.js:

    node wasm_exec.js main.wasm

    Esto permite la ejecución fuera del navegador entorno.

  2. Compilar con soporte para TinyGo y Wasi:

    tinygo build -target=wasi -o main.wasm main.go

    TinyGo brinda soporte para la compilación de Wasm con Wasi, que debería funcionar con Wasmtime.

  3. Compilación experimental de Golang con soporte Wasm:

    GOOS=wasip1 GOARCH=wasm gotip build -o main.wasm

    Esto requiere compilar Go desde las fuentes y habilitar las funciones experimentales más recientes, pero debería permitir la ejecución directa con Wasmtime.

Para estos errores específicos, se sugiere probar la opción 1 (usando Node.js con wasm_exec.js) o la opción 2 (compilando con soporte para TinyGo y Wasi) si está ejecutando Se desea ser independiente con Wasmtime.

Declaración de liberación Este artículo se reproduce en: 1729672007 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3