【发布时间】:2021-11-03 18:49:09
【问题描述】:
我是 Nuxt 的超级新手,我目前正在尝试迁移一个生成 gif ffmpeg.wasm 的 vue 应用程序以使用 Nuxt.js。但是,每当我访问该页面时,服务器就会崩溃并出现以下错误:
[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)
我知道它说要向节点添加标志,就像 ffmpeg.wasm 文档一样,但是我如何通过 Nuxt 做到这一点?或者我什至可以这样做吗?它使用的是 Nuxt 附带的默认开发服务器,我将能够在构建和托管它时解决这个问题,但我也需要在本地拥有它。
这是我在我的准系统 Vue 应用程序中使用的组件(已剥离但仍会导致错误)。我正在使用节点 v14.17.6,我正在使用这个库 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>
【问题讨论】:
-
您好,您的节点版本是多少?您是否有潜在的错误代码或某些配置要分享?
-
@kissu 我正在使用 v14.17.6,我正在使用这个库 github.com/ffmpegwasm/ffmpeg.wasm/blob/master/README.md 刚刚导入,我已经用我在准系统 vue 应用程序中使用的代码更新了原始问题
-
看看这个Vue3 example,看起来至少这是可行的。您是否尝试在
mounted()中完成所有操作?此外,由于这需要仅在客户端上可用,因此可以尝试将其包装在<client-only>标记内,如下所示:nuxtjs.org/docs/2.x/features/… -
@kissu 你是个巫师!它现在似乎在mounted()中工作,我显然知道这是在创建后调用的,更进一步,但是你知道为什么这会修复它吗?谢谢!
标签: javascript node.js vue.js nuxt.js