Las entradas de canvas.script no respetan un "mapa de importación"
https://github.com/GrapesJS/grapesjs/issues/5353#issuecomment-1704023749
Lee la respuesta completa abajo ↓Pregunta
Versión GrapesJS
- Confirmo que se debe usar la última versión de GrapesJS
¿Qué navegador usas?
Versión 1.56.20 Chromium: 115.0.5790.171 (Versión Offizieller) (arm64)
Enlace de demo reproducible
ninguno
Describe el bicho
Scripts referenciados por 'canvas.scripts'
let Editor = grapesjs.init({
lienzo: {
guiones:[...],
...
no puede importar módulos de terceros basados en un "mapa de importación".
si el mismo módulo debe usarse tanto por editor, vista previa y exportación HTML, puede requerir la preparación de dos versiones diferentes de script: una para desarrollo (dentro de GrapesJS) y otra para despliegue, lo cual definitivamente debe evitarse
Código de conducta
- Acepto seguir el Código de Conducta de este proyecto
Respuestas (4)
¿Los has probado?
al intentarlo
lienzo: {
scripts:[ // scripts para el "iframe"
{ src:'/js/ImportMap.json', type:'importmap' },
{ src:'/js/common-applet-support.esm.js', type:'module' },
],
Estilos: [ // Hojas de estilo para el "iFrame"
'/css/common-applet-support.css',
],
},
en la versión actual de GrapesJS, recibo el siguiente mensaje de error (ampliado) en el registro del navegador:
FrameView.ts:310 Los mapas de importación externa aún no están soportados.
| c | @ | FrameView.ts:310
-- | -- | -- | --
| o.onload | @ | FrameView.ts:326
| o._renderFrames | @ | CanvasView.ts:616
| o._onFramesUpdate | @ | CanvasView.ts:103
| g | @ | backbone.js:337
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| Set | @ | backbone.js:529
| e._pageUpdated | @ | Canvas.ts:55
| g | @ | backbone.js:336
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| o._onPageChange | @ | index.ts:152
| _e | @ | _executeBound.js:8
| (anónimo) | @ | bind.js:10
| (anónimo) | @ | restArguments.js:16
| g | @ | backbone.js:337
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| Set | @ | backbone.js:529
| o.select | @ | index.ts:258
| (anónimo) | @ | index.ts:128
| g | @ | backbone.js:336
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| reiniciar | @ | backbone.js:965
| o.loadProjectData | @ | Module.ts:164
| o.load | @ | index.ts:286
| (anónimo) | @ | Editor.ts:856
| o.loadData | @ | Editor.ts:856
| (anónimo) | @ | Editor.ts:837
| (anónimo) | @ | grapes.min.js:2
| (anónimo) | @ | grapes.min.js:2
| s | @ | grapes.min.js:2
| Cargar (asíncrono) | |
| o.renderScripts | @ | FrameView.ts:317
| o.render | @ | FrameView.ts:292
| n.render | @ | FrameWrapView.ts:195
| e.add | @ | ModuleDomainViews.ts:60
| (anónimo) | @ | ModuleDomainViews.ts:71
| Ke | @ | each.js:14
| (anónimo) | @ | backbone.js:1476
| e.render | @ | ModuleDomainViews.ts:71
| o._renderFrames | @ | CanvasView.ts:612
| o._onFramesUpdate | @ | CanvasView.ts:103
| g | @ | backbone.js:337
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| Set | @ | backbone.js:529
| e._pageUpdated | @ | Canvas.ts:55
| g | @ | backbone.js:336
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| o._onPageChange | @ | index.ts:152
| _e | @ | _executeBound.js:8
| (anónimo) | @ | bind.js:10
| (anónimo) | @ | restArguments.js:16
| g | @ | backbone.js:337
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| Set | @ | backbone.js:529
| o.select | @ | index.ts:258
| (anónimo) | @ | index.ts:128
| g | @ | backbone.js:336
| h | @ | backbone.js:322
| c | @ | backbone.js:110
| a.trigger | @ | backbone.js:312
| reiniciar | @ | backbone.js:965
| o.loadProjectData | @ | Module.ts:164
| o.load | @ | index.ts:286
| (anónimo) | @ | Editor.ts:856
| o.loadData | @ | Editor.ts:856
| (anónimo) | @ | Editor.ts:837
| (anónimo) | @ | grapes.min.js:2
| (anónimo) | @ | grapes.min.js:2
| s | @ | grapes.min.js:2
| Promise.then (async) | |
| l | @ | grapes.min.js:2
| (anónimo) | @ | grapes.min.js:2
| vh | @ | grapes.min.js:2
| o.load | @ | grapes.min.js:2
| (anónimo) | @ | Editor.ts:335
| (anónimo) | @ | grapes.min.js:2
| (anónimo) | @ | grapes.min.js:2
| (anónimo) | @ | grapes.min.js:2
| vh | @ | grapes.min.js:2
| (anónimo) | @ | Editor.ts:330
| setTimeout (asincrónico) | |
| o.loadOnStart | @ | Editor.ts:330
| init | @ | index.ts:87
| (anónimo) | @ | (índice):616
intentar usar un URI de datos en lugar de una referencia de archivo también falló
Gracias por informar de esto, @rozek.
El problema con las entradas de canvas.script no respetan un "import map" parece ser una condición de carrera o un problema de sincronización de gestión de estado. Esto suele ocurrir cuando los eventos del ciclo de vida de los componentes y las modificaciones del DOM se superponen, creando un estado inconsistente.
Qué probar:
- Añadir un envoltorio setTimeout para asegurar que el DOM se ha asentado: '''javascript setTimeout(() => { Tu operación aquí }, 0);
2. **Comprobar el orden de inicialización** — asegúrate de que los componentes estén completamente cargados antes de interactuar con ellos
3. **Utilizar el sistema de eventos del editor** — escuchar los eventos de finalización:
'''javascript
editor.on('component:mount', (component) => {
Es seguro interactuar con el componente aquí
});
Recomendaciones de siguientes pasos:
- Prueba con la última versión de GrapesJS si no lo has hecho
- Proporcionar un ejemplo mínimo reproducible (CodeSandbox) — esto ayuda al equipo a identificar la causa raíz más rápido
- Incluir errores de GrapesJS, de navegador y de consola en tu informe
Preguntas y respuestas relacionadas
Continúa investigando con debates sobre temas similares.
Issue #5353
las entradas de canvas.script no pueden ser módulos JS
Versión GrapesJS[X] Confirmo que se debe usar la última versión de GrapesJS¿Qué navegador usas? Versión 1.56.20 Chromium: 115.0.5790.171 (V...
Issue #5352
Uncaught SyntaxError: Token inesperado '{' a las CanvasView.ts:590:12
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Versión 1.56.20 Chromium: 115.0.5790.171...
Issue #5363
no se pueden "ordenar" elementos del panel de capas
Versión GrapesJS[X] Confirmo que se debe usar la última versión de GrapesJS¿Qué navegador usas? Versión 1.56.20 Chromium: 115.0.5790.171 (V...
Issue #5362
Funciones de propiedad arrastrables/soltables que no se llaman al arrastrar
Versión GrapesJS [X] Confirmo que se debe usar la última versión de GrapesJS ¿Qué navegador usas? Versión 1.56.20 Chromium: 115.0.5790.171...
Plugins de pago que cumplen con este problema
Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.
Cargando recomendaciones de plugins de pago...
Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.
Explora plugins gratuitos →Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.
Explora plugins premium →Tutoriales relacionados
Guías detalladas sobre el mismo tema.
Tutorial
Ship to Production Faster: What’s New in GrapesJS Shadcn
Supercharge your page builder! GrapesJS Shadcn adds live drag previews, rich text / commands, dynamic data, and canvas presets to ship to prod faster.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
GrapesJS Inline RTE Plugins Update: CKEditor 5 v0.1.4 and Froala Inline Text Editor
CKEditor 5 Inline for GrapesJS v0.1.4 fixes Studio SDK toolbar clipping, iframe injection and link balloon bugs. Compare with Froala Inline — both $69.
Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.