问题遇到的现象和发生背景
monaco-editor(v0.34.0)+vite+vue3.2,每行开始位置按tab键或空格键无法输入,会被自动退回,或者在大括号中,关键字之后无法按tab键或空格键
问题相关代码,请勿粘贴截图
import * as monaco from "monaco-editor";
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";
import EditorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker";
var monacoCodeEditor: monaco.editor.IStandaloneCodeEditor = null;
self.MonacoEnvironment = {
getWorker(_: string, label: string) {
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 (["typescript", "javascript"].includes(label)) {
return new tsWorker();
}
return new EditorWorker();
},
};
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
target: monaco.languages.typescript.ScriptTarget.ESNext,
moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs,
module: monaco.languages.typescript.ModuleKind.CommonJS,
//typeRoots: ["node_modules/@types"],
types: ["node"],
//allowNonTsExtensions: true,
allowJs: true,
});
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({
noSemanticValidation: true,
noSyntaxValidation: true,
});
onMounted(() => {
monacoCodeEditor = monaco.editor.create(codeEditor.value, {
value: operation.code,
language: "typescript",
fontSize: 13,
tabSize: 2,
theme: "vs-dark",
automaticLayout: true, // 自适应布局
foldingStrategy: "auto", // 代码可分小段折叠
overviewRulerBorder: false, // 不要滚动条的边框
/autoIndent: "none",
autoClosingBrackets: 'never', // 是否自动添加结束括号(包括中括号) "always" | "languageDefined" | "beforeWhitespace" | "never"
autoClosingDelete: 'never', // 是否自动删除结束括号(包括中括号) "always" | "never" | "auto"
autoClosingQuotes: 'never', // 是否自动添加结束的单引号 双引号 "always" | "languageDefined" | "beforeWhitespace" | "never"
renderWhitespace:"none",
tabIndex:2,
tabCompletion:"on"/
});
monacoCodeEditor.onDidChangeModelContent(() => {
monacoCodeEditor.getAction("editor.action.formatDocument").run();
operation.code = monacoCodeEditor.getValue();
});
});
运行结果及报错内容
求指点如何设置可正常缩进