在我的应用程序中,我使用摩纳哥编辑器作为游乐场环境,用户可以在其中编辑和运行打字稿代码。
这曾经在 v0.40.0 之前的摩纳哥编辑器中工作,但自从升级到 v0.41.0 后,我只是收到一条错误消息“TypeScript 未注册!”。我需要做什么才能“注册”TypeScript?
要运行代码,我使用如下编辑器操作:
editorInstance.addAction({
id: 'compile-and-run',
label: 'Compile and run',
keybindings: [KeyMod.CtrlCmd | KeyCode.Enter],
async run() {
const model = editorInstance.getModel();
if (!model) {
console.error('compile-and-run: no editor-model found.');
return;
}
const worker = await languages.typescript.getTypeScriptWorker();
const proxy = await worker(model.uri);
const {outputFiles} = await proxy.getEmitOutput(model.uri.toString());
const jsCode = outputFiles[0].text;
await runJsCode(jsCode);
}
});
您可以使用打字稿工作者来编译您的代码。我什至在没有编辑的情况下这样做。要修复注册,您需要以下代码。
private initDone = false;
private ensureTypeScriptRegistration() {
if (!this.initDone) {
// fix "TypeScript not registered!" when skipping the creation of the editor
const editor = monaco.editor.create(document.createElement('div'));
editor.dispose();
this.initDone = true;
}
}