我正试图在一个react应用程序中加载ffmpeg.wasm,以完成一个小型视频转换器项目。该代码在chrome上运行良好,但在firefox版本(83.0b)中,我捕捉到以下错误:
ReferenceError:未定义SharedArrayBuffer
下面是组件中捕获错误的部分(变量就绪永远不会变为真):
import React, { useState, useEffect } from 'react'
import styles from './App.module.css'
import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg'
const ffmpeg = createFFmpeg({ log: true })
function App() {
// load state
const [ready, setReady] = useState(false)
// files state
const [video, setVideo] = useState('')
const [gif, setGif] = useState()
// UI state
const [dragOver, setDragOver ] = useState(false)
const [nOfEnters, setNOfEnters] = useState(0)
const load = async () => {
try {
await ffmpeg.load()
setReady(true)
} catch(error) {
console.log(error)
}
}
useEffect(() => {
load()
}, [])谢谢,如果我应该提供更多的细节,请告诉我。
发布于 2020-12-14 12:28:44
尝试在服务器响应中添加以下标题:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp您可以在这里找到一些详细信息:https://web.dev/coop-coep/
发布于 2020-12-28 19:07:30
对我来说,添加标题只是解决方案的一部分。
首先在Apache中,我需要启用mod_header
sudo a2enmod headers然后,我可以在mysite.conf文件中设置头部。
Header set Cross-Origin-Opener-Policy: same-origin
Header set Cross-Origin-Embedder-Policy: require-corp不过,在此之后,我仍然收到错误,需要为HTTPS创建SSL证书和安装Apache。
生成SSL证书
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 1095 -newkey rsa:2048 -out /etc/apache2/ssl/server.crt -keyout /etc/apache2/ssl/server.key设置Apachce
sudo a2enmod ssl
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/000-default-ssl.conf然后编辑000-default-ssl.conf文件
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.keyhttps://hallard.me/enable-ssl-for-apache-server-in-5-minutes/
https://stackoverflow.com/questions/64962224
复制相似问题