From 6bd822bb93ffbb299d555a204246a9fa5c9f5662 Mon Sep 17 00:00:00 2001 From: "gary.fu" Date: Wed, 4 Nov 2026 16:06:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E4=BF=AE=E5=A4=8D=20Monaco=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=88=9D=E5=A7=8B=E5=8C=96=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/vendors/monaco-editor.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/vendors/monaco-editor.js b/src/vendors/monaco-editor.js index c1384bf..12d1b24 100644 --- a/src/vendors/monaco-editor.js +++ b/src/vendors/monaco-editor.js @@ -1,5 +1,5 @@ import VueMonacoEditor, { loader } from '@guolao/vue-monaco-editor' -import { ref, watch, toRaw, h, withDirectives, resolveDirective } from 'vue' +import { ref, watch, toRaw, h, withDirectives, resolveDirective, defineAsyncComponent } from 'vue' const MonacoLoader = () => import('monaco-editor') const WorkerImporters = { @@ -153,13 +153,18 @@ export const getLoadingDiv = (attrs = {}) => { export default { install (app) { - app.component(VueMonacoEditor.name, { - setup (props) { - if (loader.__getMonacoInstance() === null) { - MonacoLoader().then(monaco => loader.config({ monaco })) + app.component(VueMonacoEditor.name, defineAsyncComponent({ + loader: async () => { + // 等待本地 Monaco 配置完成后再创建编辑器,避免触发默认 CDN 加载。 + const monaco = await MonacoLoader() + loader.config({ monaco }) + return { + setup (props) { + return () => h(VueMonacoEditor, props, () => [getLoadingDiv()]) + } } - return () => h(VueMonacoEditor, props, () => [getLoadingDiv()]) - } - }) + }, + loadingComponent: { render: () => getLoadingDiv() } + })) } }