livewire 如何使用三方包提供的 webworker

1. 运行环境

laravel 10.31.0
php 8.2.14
node v20.10
vite 4
monaco-editor 0.45.0
Ubuntu 22.04
开发环境

2. 问题

目前自己的一个项目开发环境中 vite输出前端资源端口为 5173 laravel 开发服务则使用 80 端口输出页面内容。

我想尝试使用 monaco-editor 来编辑 json 和 yaml 内容。碰到的问题是由于我采用的是 livewire 进行的混合模式开发,monaco-editor 提供的 webwoker 加载路径从 5173 端口输出,导致在开发环境跨域。

// bootstrips.js

import * as monaco from 'monaco-editor'
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'

self.MonacoEnvironment = {
  getWorker(_, label) {
    if (label === 'json') {
      return new jsonWorker()
    }
    if (label === 'css' || label === 'scss' || label === 'less') {
      return new cssWorker()
    }
    if (label === 'html' || label === 'handlebars' || label === 'razor') {
      return new htmlWorker()
    }
    if (label === 'typescript' || label === 'javascript') {
      return new tsWorker()
    }
    return new editorWorker()
  }
}

请问使用livewire混合开发模式碰到的这种 webworker 跨域问题,大家是如何解决的?

livewire 如何使用三方包提供的 webworker

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
随波逐流

刚刚在看 livewire3, 还在学习中。 :joy:

3个月前 评论

vite.config.js添加server选项相关代码

export default defineConfig({
    plugins: ...,
    server: {
        host: '0.0.0.0',
        hmr: {
            host: 'localhost'
        }
    }
});
3个月前 评论
sanders (楼主) 3个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!