Soy muy nuevo en Nuxt y actualmente estoy tratando de pasar a una aplicación vue que genera gifs ffmpeg.wasm para usar Nuxt.js. Sin embargo, cada vez que visito la página, el servidor falla con el siguiente error:
[fferr] requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag 18:36:38 (on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)Sé que dice agregar las banderas al nodo, al igual que los documentos ffmpeg.wasm, pero ¿cómo hago eso a través de Nuxt? ¿O incluso puedo hacer eso? Está utilizando el servidor de desarrollo predeterminado que viene con Nuxt, y podré resolver esto cuando esté construido y alojado, pero también necesito tenerlo localmente.
Aquí está el componente que estoy usando en mi aplicación barebones Vue (recortado pero aún causa un error). Estoy usando el nodo v14.17.6 y estoy usando esta biblioteca github.com/ffmpegwasm/ffmpeg.wasm/blob/master/README.md
<template> <div class="home"> <h1>FFMPEG test</h1> </div> </template> <script> import { createFFmpeg } from '@ffmpeg/ffmpeg' export default { name: 'Home', data: function () { return { ffmpeg: null, } }, created() { this.ffmpeg = createFFmpeg({ log: true, }) // Initialise loadFFmpeg this.loadFFmpeg() }, methods: { async loadFFmpeg() { await this.ffmpeg.load() }, }, } </script>La creación de la instancia en un mounted() solucionó el problema.
Esto probablemente se deba al hecho de que ffmpeg necesitaba que la instancia de Vue ya estuviera montada en el DOM (en la forma en que funciona).
created() generalmente se usa para llamadas AJAX o cosas que no están tan relacionadas con la instancia de Vue, y al mostrarse con la API de composición en su ejemplo , me dio la idea de probar el gancho mounted() .