npm install -s monaco-editor
Creé una nueva aplicación vue y ejecuté , luego cambié mi App.vue para que se vea así:
<template>
<div id="app" style="width: 500px; height: 500px;">
<div ref="editor" style="width: 500px; height: 500px;"></div>
</div>
</template>
<script>
import * as monaco from 'monaco-editor';
export default {
name: 'app',
async mounted() {
const el = this.$refs.editor;
this.editor = monaco.editor.create(el, {
value: "console.log('hello world');",
language: 'javascript',
});
},
};
</script>
Cuando ejecuto la aplicación, veo lo siguiente en la consola de JavaScript:
Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq simpleWorker.js:31
You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker 2 simpleWorker.js:33
Error: "Unexpected usage"
loadForeignModule editorSimpleWorker.js:494
_foreignProxy webWorker.js:54
languageFeatures.js:209
_doValidate languageFeatures.js:209
Intenté buscar el error, pero la mayoría de los hilos parecen centrarse en acceder a los archivos a través del archivo: /// que no estoy haciendo (estoy accediendo al servidor web de nodo).
Además, el editor no se procesa correctamente a menos que la altura se especifique explícitamente; no creo que sea un comportamiento esperado.
¿Cómo puedo hacer que monaco-editor funcione correctamente en Vue? Me gustaría evitar envoltorios de terceros no oficiales como https://github.com/egoist/vue-monaco si es posible por razones de soporte.
Node / Vue novato, ¡así que sé amable!
fuente
Respuestas:
Mónaco accede a los trabajadores de manera
file://
predeterminada, pero no funciona en la web.Debe reemplazarlo
http://
configurando MonacoEnviorment manualmente o utilizando Monaco Webpack Plugin .Consulte los documentos oficiales
fuente
Intente especificar el
webpack
complemento monaco en la configuración de su paquete web:O instale monaco-editor-webpack-plugin e intente usar eso en su lugar:
En cuanto a
height
ywidth
, puede escuchar el tamaño de la ventana y llamareditor.layout()
o calcular el tamaño del contenedor y pasar el tamaño aleditor.layout()
método (1) .O puede probar algo de otras respuestas publicadas en hilos similares, por ejemplo:
O algo como esto:
fuente
require('monaco-editor/webpack')
no es así, en mi instalar - no hay es/webpack
sobrenode_modules/monaco-editor
. ¿Cómo / qué instaló?package.json
de esos proyectos podría informar.monaco.editor.create()
el editor obtiene su tamaño del elemento contenedor. Sería bueno tener el mismo comportamiento que VS Code.editor.layout()
o calcular el tamaño del contenedor y pasar el tamaño aleditor.layout()
método