将 webpack worker-loader 与 nuxt.js 结合使用

2024-01-08

我正在尝试在以下范围内使用 Web Workernuxt.js 框架 https://nuxtjs.org/但不断收到参考错误。ReferenceError: Worker is not defined.

我已经安装了工人装载机1.1.1 https://github.com/webpack-contrib/worker-loader通过 npm 并将以下规则添加到我的nuxt.config.js:

module.exports = {
  build: {
    extend (config, { isDev, isClient }) {
      if (isDev && isClient) {
        config.module.rules.push({
          enforce: 'pre',
          test: /\.(js|vue)$/,
          loader: 'eslint-loader',
          exclude: /(node_modules)/
        })
      }
      // Web Worker support
      config.module.rules.push({
        test: /\.worker\.js$/,
        use: { loader: 'worker-loader' },
        exclude: /(node_modules)/
      })
    }
  }
}

如果我通过创建一个构建nuxt build看起来网络工作文件已创建。

Asset                           Size                      
2a202b9d805e69831a05.worker.js  632 bytes          [emitted]

我将它导入到 vuex 模块中,如下所示:

import Worker from '~/assets/js/shared/Loader.worker.js'

console.log(Worker)
const worker = new Worker // <- this line fails!

在控制台中,我得到了一个看起来像创建工作人员的函数:

ƒ () {
  return new Worker(__webpack_require__.p + "345c16d02e75e9312f73.worker.js");
}

在工作人员内部,我只有一些虚拟代码来看看它是否真的有效:

const msg = 'world!'

self.addEventListener('message', event => {
  console.log(event.data)
  self.postMessage({ hello: msg })
})

self.postMessage({ hello: 'from web worker' })

我们先来解决一些事情:

  • 工作人员仅在客户端可用 -> 无 ssr

所以你要么需要使用无ssr组件 https://nuxtjs.org/api/components-no-ssr#the-lt-no-ssr-gt-component,或者需要将应用程序设置为 nossr https://nuxtjs.org/api/configuration-build#ssr

有了这些知识,我们将修改我们的nuxt.config.js如下:

mode: 'spa',
build: {
  extend(config, { isDev, isClient }) {
    ...
    // Web Worker support
    if (isClient) {
      config.module.rules.push({
        test: /\.worker\.js$/,
        use: { loader: 'worker-loader' },
        exclude: /(node_modules)/
      })
    }
  }
}

after npm run build and npm run start它应该像魅力一样发挥作用。

我为您创建了一个存储库,它是一个标准的 nuxt 模板,其中使用了工作加载程序:Github 仓库 https://github.com/Greaka/standardNuxt

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 webpack worker-loader 与 nuxt.js 结合使用 的相关文章

随机推荐

  • 在ASP中打开并读取txt文件

    我想打开一个txt文件并从中读取代码 StreamReader reader File OpenText TrackData vehicle points txt TrckData是我的网络应用程序中的一个文件夹 但我收到此错误 找不到路径
  • 多少外部数据才算太多? (XML 或 JSON)

    我之前编写过纯 JavaScript 前端 并开始注意到在处理大量数据时性能会下降 我尝试过使用 xml 和 json 但在这两种情况下 浏览器需要处理的数据量很大 这提出了我的问题 多少算太多 你无法知道 不完全知道 也不总是知道 你可以
  • 如何在spring xml配置中注入环境变量?

    AWS 谈论System getProperty JDBC CONNECTION STRING in http docs aws amazon com elasticbeanstalk latest dg create deploy Jav
  • 检查 url WebView Swift 是否有效

    我想在将视频网址嵌入到我的 webView 之前检查它是否有效 因为如果用户输入无法解析或包含视频的 url 那么 webView 将显示一个白框 if MyVariables link is valid let Code NSString
  • 如何为 Matplotlib 图形添加剪贴板支持?

    在 MATLAB 中 有一个非常方便的选项可以将当前图窗复制到剪贴板 尽管 Python numpy scipy matplotlib 是 MATLAB 的绝佳替代品 但遗憾的是缺少这样的选项 这个选项可以轻松添加到 Matplotlib
  • 如何让机器保持清醒状态?

    我有一个用 Java 编写的服务器软件 可以在 Windows 和 OS X 上运行 它不是在服务器上运行 而是在普通用户的 PC 上运行 类似于 torrent 客户端 我希望该软件发出信号到操作系统以在机器处于活动状态时保持机器唤醒 防
  • Windows 服务:在作为 LocalSystem 运行时侦听套接字

    我正在用 C 语言为 Windows 编写一个类似服务器的小型程序 使用 MinGW GCC 在 Windows 7 上测试 该程序最终应该作为本地系统帐户的服务运行 我正在创建一个套接字 并使用 Windows 套接字bind liste
  • 使用 Nunit TestCaseSource 运行测试设置的正确方法

    我正在尝试使用 NUnit 中的 TestCaseSource 运行多个测试 但我很难让 SetUp 在我需要的时候运行 目前它按照我想要的方式工作 但感觉不 正确 所以以下是主要测试用例代码 简化 public class ImportT
  • Jenkins 的 Hash 的 Java 端口 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找这个文件的java端口 C 中的 Jenkins 哈希 http burtleburtle net bob c lookup2
  • 如何使用 Hibernate 映射用户数据类型(复合类型)

    我对 Hibernate 世界还很陌生 我通过 ER CASE TOOL TOAD 对我的数据库进行了建模 并定义了几种用户数据类型 复合类型 例如 假设我有一个类型 Contact 在 PostgreSQL 中声明如下 CREATE TY
  • ODP.NET 错误无法找到请求的 .Net Framework 数据提供程序

    我正在尝试使用 Oracle 11g Express 和 NET 4 0 框架开发 ASP NET MVC 4 0 应用程序 我可以使用 ODP NET 提供程序连接到数据库 还可以针对数据库生成 EDMX 我不能做的是使用实体框架查询底层
  • 如何使用 Spark UDF 返回复杂类型

    您好 提前谢谢您 我的程序是用java编写的 我无法转移到scala 我目前正在使用以下行处理从 json 文件中提取的 Spark DataFrame DataFrame dff sqlContext read json filePath
  • django中间件使post请求空白

    如果我使用中间件 我发送的发布数据将被捕获为空白 如果我从 settings py 文件中删除中间件 它将返回发布数据 我究竟做错了什么 这是我删除中间件时的正确结果 这是中间件代码 这里的缩进可能是错误的 class CheckAutho
  • spec/rails_helper.rb 与 spec/spec_helper.rb 有何不同?我需要它吗?

    我正在第二次学习 Rails 教程 当我输入这个 rails generate integration test static pages I get spec rails helper rb and spec spec helper rb
  • 将文件从目录拉取到 NPM 的根文件夹中

    我正在向 NPM 发布一个库 当我构建库时 生成的工件被放置在dist文件夹位于我的项目的根目录中index js 当用户从 NPM 安装时我想index js出现在root在他们创建的文件夹中node modules文件夹 目前 它保留在
  • 如何在 Swift 中获取 AVAsset 的视频时长

    这可能是重复的问题 但我花了很多时间来解决 我将 mp4 文件下载到纪录片目录中 我可以使用此函数获取所有文件名 func listFilesFromDocumentsFolder gt String let fileMngr FileMa
  • 使用 GroupBy 和 Average 将 SQL 转换为 lambda LINQ

    我花了几个小时尝试将简单的 SQL 转换为 lambda LINQ SELECT ID AVG Score FROM myTable GROUP BY ID 任何想法 from t in myTable group t by new t I
  • 如何在临时构建后调试 iPhone 应用程序?

    我对我的应用程序进行了临时分发 现在我想再次调试它 我已经使用 CoreData 更改了一些内容 但我不能 如果我使用 分发设置 按 调试 则默认图片会在设备上启动 但出现错误 调试错误 正在调试的程序未运行 如果我使用调试设置 我会收到另
  • 为什么 cron 不能正确执行我的 PHP 脚本?

    我有一个 PHP 脚本 只是一个简单的脚本 我试图让它作为 cronjob 运行 每次执行 PHP 脚本时 我都会收到一封包含 PHP 脚本本身的邮件 我该如何解决这个问题 我在谷歌上搜索了很多 但找不到任何有效的东西 在您的 Direct
  • 将 webpack worker-loader 与 nuxt.js 结合使用

    我正在尝试在以下范围内使用 Web Workernuxt js 框架 https nuxtjs org 但不断收到参考错误 ReferenceError Worker is not defined 我已经安装了工人装载机1 1 1 http