我正在为一个客户准备一个录音应用程序。其中两个要求是它需要使用vue和无损格式的记录来运行,所以我选择flac方法。我找到一个
speech-to-flac library
在github上,并试图将其移植到vue,但在任何时候引用工作代码时,让vue编译都有问题。
一种方法是尝试导入它,就像我使用的wav编码器的工作示例一样。
import
功能:
import EncoderWav from './encoder-wav-worker.js'
...
createWorker (fn) {
var js = fn
.toString()
.replace(/^function\s*\(\)\s*{/, '')
.replace(/}$/, '')
var blob = new Blob([js])
return new Worker(URL.createObjectURL(blob))
}
(不是我的代码,我只知道它适用于wav编码器。)
如果我用flac编码器试试这个,我会得到这样的信息:
未找到此依赖项:
*fs in./src/recording/flac-encoder.js中的fs
要安装它,可以运行:npm install--save fs
运行安装脚本,然后重新生成会导致相同的错误。我的猜测是Vue的Webpack模块试图解决flac库代码的依赖性,但是该代码应该在WebWorker的上下文中运行,所以很有可能它会包含常规浏览器上下文无法理解的依赖性。
为了完整起见,我还尝试将工作程序代码作为url而不是blob提供给工作程序:
createWorker (fn) {
return new Worker('./flac-encoder.js');
}
这样做的话,当我试图创建worker时,会得到一个404错误。无论
flac-encoder.js
与执行该代码的记录器实用程序脚本位于同一目录中,位于整个项目的根目录中,或介于两者之间的任何位置。
我是否可以告诉vue/webpack忽略这些文件以进行依赖关系检查,但仍包括它们?