No se pueden almacenar datos Token inesperado '-'
Los nombres de variables no pueden contener '-', por lo que esta sintaxis es inválida: '''js const { gjs-assets, gjs-components, gjs-css, gjs-html, gjs-styles } = req.body; ```
Lee la respuesta completa abajo ↓Pregunta
Por favor, ayudadme, quiero almacenar datos de GJS en mysql pero no consigo obtener ningún dato de frontend a back end Aquí es mi código: 'const editor = grapesjs.init({ contenedor: "#editor", storageManager: { Tipo: 'A distancia', params: {}, // Para valores personalizados en peticiones tus endpoints SERVER urlStore: 'http://example.com/store-webpage', urlLoad: 'http://example.com/load-webpage', contentTypeJson: cierto, fijaPasos antes de guardar: 1, },
blockManager: {
appendTo: "#blocks",
},
StyleManager: {
appendTo: "#styles-contenedor",
Sectores: [
{
nombre: "Dimension",
abierto: falso,
buildProps: ["ancho", "altura mínima", "acolchado"],
Propiedades: [
{
tipo: "entero",
nombre: "El ancho",
propiedad: "ancho",
Unidades: ["PX", "%"],
Valores por defecto: "auto",
min: 0,
},
],
},
],
},
layerManager: {
appendTo: "#layers-contenedor",
},
traitManager: {
appendTo: "#trait-contenedor",
},
selectorManager: {
appendTo: "#styles-contenedor",
},
Paneles: {
Valores por defecto: [
{
id: "acciones básicas",
el: ".panel__basic-acciones",
botones: [
{
id: "visibilidad",
activo: true, // activo por defecto
NombreClase: "btn-toggle-borders",
etiqueta: '<i class="fa fa-clone"></i>',
comando: "sw-visibility", // Comando incorporado
},
],
},
{
id: "store-data",
el: ".panel__save-datos",
botones: [
{
id: 'guardar-db',
claseNombre: 'fa fa-flopy icon-flopy',
etiqueta: '<i class="far fa-save"></i>',
Comandamiento: 'guardar-db',
atributos: { título: 'Guardar la base de datos' }
},
],
},
{
id: "panel-dispositivos",
EL: ".panel__devices",
botones: [
{
id: "dispositivo-escritorio",
etiqueta: '<i class="fa fa-television"></i>',
comando: "establecer-dispositivo-escritorio",
ACTIVO: Cierto,
Activable: falso,
},
{
id: "dispositivo-móvil",
etiqueta: '<i class="fa fa-mobile"></i>',
comando: "establecer-dispositivo-móvil",
Activable: falso,
},
],
},
],
},
deviceManager: {
Dispositivos: [
{
nombre: "Escritorio",
ancho: "",
},
{
nombre: "Mobile",
Ancho: "320px",
widthMedia: "480px",
},
],
},
Plugins: ["GJS-Blocks-Basic"],
pluginsOpts: {
"gjs-blocks-basic": {},
},
});
Mandos
editor. Commands.add('save-db', {
run: function (editor, sender) {
sender & & sender.set('active', 0); Apaga el botón
editor.store();
}
});
editor.on('storage:load', function(e) { console.log('Load', e);});
editor.on('storage:store', function(e) { console.log('Stored ', e);});
editor. Commands.add("set-device-desktop", {
run: (editor) => editor.setDevice("Escritorio"),
});
editor. Commands.add("set-device-mobile", {
run: (editor) => editor.setDevice("Mobile"),
});
`
Página web de la tienda de backend
'exports.storeWebpage = async (req, res)=>{
const { gjs-assets, gjs-components, gjs-css, gjs-html, gjs-styles } = req.body;
if (usuario){
var gjs_content = new GjsModels({
Activos:Activos,
componentes:componentes,
CSS:CSS,
html:html,
Estilos:Estilos
})
await gjs_content.save()
.then(response=>{
console.log('Guardado con éxito con ${respuesta}')
res.redirect('/admin/story-maker');
}).catch(err =>{
console.log('Error guardado ${err.message}')
res.redirect('/admin/story-maker');
})
}
}`Respuestas (4)
Los nombres de variables no pueden contener '-', por lo que esta sintaxis es inválida: '''js const { gjs-assets, gjs-components, gjs-css, gjs-html, gjs-styles } = req.body;
Por favor, ayudadme, quiero guardar la plantilla en MySQL. ¿Cómo lo hago?
Desafortunadamente, esto puede estar fuera del alcance de Grapesjs, pero hay algunas cosas a tener en cuenta '''js Esto no es válido const { gjs-assets, gjs-components, gjs-css, gjs-html, gjs-styles } = req.body;
Puedes intentar asignar cada valor individualmente const { cuerpo } = requ; activos const = cuerpo['GJS-Assets']; const components = body['gjs-components']; //...
Además, como parece que estás quitando el prefijo 'gjs-' durante el almacenamiento, también debes añadirlo de nuevo durante la carga. Aquí se usa un enfoque similar https://github.com/Ju99ernaut/gjs-api pero para python y postgres.
Gracias por informar de esto, @Spectrevuln-sketch.
El problema con No se puede almacenar token inesperado de datos '-' 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 #3137
Cuando selecciono un elemento en particular, no obtengo sus estilos. Este problema solo ocurre con algunos elementos.
No captando estilos del elemento seleccionado Aquí está mi código, Modelo const = editor. StyleManager.getModelToStyle(component); sea styl...
Issue #4191
Estamos intentando almacenar los datos del editor grapesJS en la aplicación Angular 10, obteniendo un error CORS, imagen adjunta abajo
Versión GrapesJS [x] Confirmo que uso la última versión de GrapesJS ¿Qué navegador usas? Chrome 99.0.4844.5 Enlace de demo reproducible htt...
Issue #3688
Cómo personalizar un componente
Leí este documento https://grapesjs.com/docs/modules/Components.html#define-custom-component-type e intenté escribir el siguiente código. Q...
Issue #3347
¿Cómo puedo conseguir código JS sin comprimir para editarlo?
Hola, gracias por revisar mi problema. Quiero usar mi propio JSEditor para editar html, css y js. Primero, uso 'getHtml', 'getCss', 'getJs'...
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 →Explorar categorías de plugins
Ve directamente a las páginas de categorías de plugins en el marketplace.