当前位置: 首页 > 知识库问答 >
问题:

从VUE的构建/WebPack阶段排除工作代码

柳涵意
2023-03-14

我正试着为一个客户做一个录音应用程序。其中的两个要求是,它需要使用VUE运行并以无损格式记录,所以我将使用FLAC方法。我在Github上找到了一个Speech to-FLAC库,并试图将其移植到Vue中,但在任何时候都要引用工作代码时,我都无法编译Vue。

一种方法是尝试导入它,这与我使用import功能的WAV编码器的工作示例相同:

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编码器,我会得到这样的消息:

未找到此依赖项:

*./src/recording/flac-encoder.js中的fs

安装它,可以运行:npm install--save fs

运行安装脚本然后重新生成会导致相同的错误。我的猜测是,Vue的WebPack模块试图解决FLAC库代码的依赖关系,但该代码应该在WebWorker的上下文中运行,因此很有可能会包含通常浏览器上下文无法理解的依赖关系。

为了完整起见,我还尝试将worker代码作为URL而不是blob提供给worker:

createWorker (fn) {
    return new Worker('./flac-encoder.js');
}

这样做,我得到一个404错误时,试图创建工作者。无论flac-encoder.js与执行该代码的记录器实用程序脚本在同一个目录中,还是在整个项目的根目录中,或者在两者之间的任何位置,都将发生这种情况。

有没有一种方法可以让VUE/WebPack在依赖项遍历中忽略这些文件,但仍然包含它们?

共有1个答案

洪知
2023-03-14

如果您已使用vue-webpack-boilerplate初始化项目(即通过Vue CLI$Vue init webpack my-project),则应该在项目的根目录处有一个static文件夹。

这是您应该将flac-encoder.js文件放在的位置,并在Worker初始化中引用它:

new Worker('./static/flac-encoder.js');

如果该工作者依赖于其他文件(即使用importscripts),请将这些文件也放在static文件夹中。

CodeSandBox示例:https://codeSandBox.io/S/O5QWL43K7Y

(但请注意,CodeSandbox配置似乎将静态文件直接放在构建的根目录中,而不是放在static目标文件夹中)。

 类似资料:
  • 多阶段构建 之前的做法 在 Docker 17.05 版本之前,我们构建 Docker 镜像时,通常会采用两种方式: 全部放入一个 Dockerfile 一种方式是将所有的构建过程编包含在一个 Dockerfile 中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题: 镜像层次多,镜像体积较大,部署时间变长 源代码存在泄露的风险 例如,编写 app.go 文件,该程序输出 H

  • Docker的口号是 Build,Ship,and Run Any App,Anywhere,在我们使用 Docker 的大部分时候,的确能感觉到其优越性,但是往往在我们 Build 一个应用的时候,是将我们的源代码也构建进去的,这对于类似于 golang 这样的编译型语言肯定是不行的,因为实际运行的时候我只需要把最终构建的二进制包给你就行,把源码也一起打包在镜像中,需要承担很多风险,即使是脚本语

  • 我在代码构建过程的构建阶段遇到以下错误: “执行命令时出错:docker build-t…”原因:退出状态1 我有一个使用ecr权限设置的代码构建服务角色,aws ecr登录阶段已经成功,我的buildspec.yml非常简单——几乎只是标准模板。运行时是亚马逊管理的ubuntu镜像,标准。 Docker构建失败的原因有哪些?有没有人建议进行故障排除? 谢谢你 完整buildspec.yml文件:

  • 我学习了CDK管道:AWS CDK应用程序的连续交付教程,该教程概述了如何使用新的CodePipeline API创建自变异CDK管道。 本教程创建了一个代码管道,每次将更改推送到主分支时,都会自动从GitHub repo检索CDK源代码。CDK代码使用CDK旁边定义的typescript处理程序定义lambda。 对于我的用例,我想定义一个自变异的代码管道,每当我推送到包含应用程序源代码的第二个

  • 如何安装卷来存储我的. m2存储库,这样我就不必在每次构建时下载互联网? 我的构建是一个多阶段构建:

  • 我有一个多模块的maven项目 我有maven surefire插件设置,用于执行单元测试“*测试。“核心api”模块中包含java。 我们在一个单独的“集成测试”模块中进行了缓慢的长时间运行的集成测试。我们使用“*测试。java也用于我们的integ测试。 我们需要能够编译所有源代码,但希望排除“intg-test”作为默认maven“test”阶段的一部分运行。我们计划使用配置文件来启用“in