引用 'monaco-editor/esm/vs/editor/editor.api' 导致出现循环引用问题
@Cythia828 já está trabalhando nisso.
Desde 8/4/2025.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
description
如图,在 filter/monaco-editor-core 导出了 'monaco-editor/esm/vs/editor/editor.api'。
在项目中,配置官方提供的 plugin monaco-editor-webpack-plugin。查看 plugin 的源码可知:
这个 plugin 在本地编译 / 打包时,会匹配 editor.api.js 和 editor.main.js,使用 loader 处理,loader 中干了什么呢?
可以看到,language 的 导入语句 会在最后被写入(在上一张图中可以看到 post 表示 language 集合)。
下图是本地启动后,webpack 热更新生成的临时文件,可以看到 plugin 的效果。
在项目中,导入 monaco-sql-language ,在其中导出的内容中, monaco-sql-languages/esm/_.contribution.js 文件中导入了 './fillers/monaco-editor-core'。monaco-editor-core 导出 monaco-editor/esm/vs/editor/editor.api。即:
// app.js
import { LanguageIdEnum, setupLanguageFeatures } from 'monaco-sql-languages';
...
// monaco-sql-languages/main.js
export * from './_.contribution';
// monaco-sql-languages/esm/_.contribution.js
import { languages } from './fillers/monaco-editor-core';
// monaco-sql-languages/esm/fillers/monaco-editor-core
export * from 'monaco-editor/esm/vs/editor/editor.api';
本地编辑 / 打包后,被处理的 monaco-editor/esm/vs/editor/editor.api.js 文件中会存在 monaco-sql-language 中 language 的导入。而在导入的 language 文件中,又导入了 monaco-sql-languages/esm/_.contribution.js ,存在循环引用的问题。导致 ReferenceError: Cannot access 'N' before initialization 的问题。
https://github.com/DTStack/monaco-sql-languages/issues/98 的解决办法是在这之前先引用一下 editor.api.js 这个文件
import 'monaco-editor/esm/vs/editor/editor.api';
虽然这样也会导致编译到 monaco-sql-languages/esm/_.contribution.js 文件中的 import { languages } from './fillers/monaco-editor-core'; 这一行时失败,失败是在 require配置的custom language处,上面的是正常加载(包括editor.api.js),加载的内容存在缓存中,在下次进入到 _.contribution.js 文件时,import { languages } from './fillers/monaco-editor-core'; 会直接从缓存中取。
请问有什么更好的解决办法吗?上面这个方法虽然可以解决现有的问题,但是在不知道这个问题的人看到这段代码时,会产生疑惑(比如我)。如果没有注释,可能顺手就删掉了。
- Linguagem predominante
- TypeScript
- Estrelas
- 295
- Forks
- 50
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de DTStack/monaco-sql-languages
-
Build fails with monaco-editor >= 0.56: monaco-editor/esm/vs/editor/editor.api no longer resolvesAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 67/100
DTStack/monaco-sql-languages#231 · 1 comentário ·
-
[email protected] 存在 Revert Block 异常Talvez livre de novo @liuxy0551 assumiu há 172 dias e não há nenhum pull request aberto. Aberta
DTStack/monaco-sql-languages#215 · 1 responsável ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
DTStack/monaco-sql-languages#213 · 1 comentário ·
-
add support for clickhouseAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 38/100
DTStack/monaco-sql-languages#210 · 1 comentário ·
-
add support for mssqlAberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
DTStack/monaco-sql-languages#209 ·
Todas as issues de DTStack/monaco-sql-languages
Issues semelhantes
-
VS Code extension: clickable file links in chat drop the :line suffix, never jump to the lineAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
MoonshotAI/kimi-code#4398 ·
Mantenedores costumam responder em até 1 dia
-
Xiaomi Mimo语音识别服务异常Abertapending triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
package-lock.json : les binaires natifs macOS et Linux de unrs-resolver ont disparu depuis #1823Abertabug dependencies
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
AxaFrance/design-system#2064 ·
Mantenedores costumam responder em até 3 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100