3
votes

Longueur de chaîne non valideRangeError dans Vue uniquement dans certains environnements

J'ai un composant Vue en production et un environnement de test. En production, c'est dans un thème wordpress et j'obtiens l'erreur:

    jQuery(document).ready(function($) {

                    // Using a basic set of effect
                    var vm = new Vue({
                        el: '#main',
                        data: {

                                events: <?php echo json_encode($another); ?>, 
                        },

                        filters: {
                            date: function (value) {
                                return moment(value).format("dddd, MMM Do");   
                            }
                        },
                        mounted: function () {

                            console.log(this.events)
                            this.$nextTick(function () {
                                // code that assumes this.$el is in-document


                                var acc = document.getElementsByClassName("accordion");
                                var i;

                                for (i = 0; i < acc.length; i++) {
                                    acc[i].onclick = function(){
                                        this.classList.toggle("active");
                                        this.nextElementSibling.classList.toggle("show");
                                    }
                                }
                            })
                        },
                        methods:{
                            show: function(event){

                                var clickedElement = event.target;
                                $(clickedElement).siblings('panel').toggle("show");
                            }
                        }
                    })

                })

Lors des tests, j'utilise juste un fichier autonome et je n'obtiens pas d'erreur et le composant fonctionne bien. Je suppose qu'il y a quelque chose de différent dans Wordpress et Server qui provoque l'erreur.

D'après ce que j'ai lu, c'est juste une longue chaîne qui cause l'erreur, mais comment la corriger si vous ne pouvez pas répéter l'erreur localement? Existe-t-il des "Got Ya's" communs avec Wordpress?

Le composant lui-même est très simple:

 <div v-for="event in events" style="    margin: 10px;" v-if="events">
                                <button class="accordion" @click="show">
                                    <a :href="event.url"> Buy Now </a>
                                    <p v-text="event.name.text"></p>
                                    <span class="date">{{ event.start.local | date }}</span>
                                    <span class="capacity" v-if="event.capacity"> Capacity: <span v-text="event.capacity"></span></span>

                                </button>

                                <div class="panel">
                                  <div class="accordian-body" v-html="event.description.html"></div>
                                  <a :href="event.url" class="buy-bottom"> Buy Now </a>
                                </div>

                            </div>
jquery.min.js:2 Uncaught RangeError: Invalid string length
    at repeat$1 (vue.js:11398)
    at generateCodeFrame (vue.js:11380)
    at vue.js:11467
    at Array.forEach (<anonymous>)
    at compileToFunctions (vue.js:11464)
    at Vue.$mount (vue.js:11688)
    at Vue._init (vue.js:4901)
    at new Vue (vue.js:4967)
    at HTMLDocument.<anonymous> ((index):234)
    at l (jquery.min.js:2)


0 commentaires

3 Réponses :


3
votes

L'erreur est trompeuse. J'ai eu un problème similaire et j'ai trouvé que c'était un problème avec le modèle en ligne. Il y avait une balise de style, qui causait le problème dans mon projet. Dans votre cas, je pense que le problème réside dans l'objet de données. Utilisez une chaîne littérale dans votre objet de données d'événements comme ceci et cela devrait fonctionner:

data: {

            events: `<?php echo json_encode($another); ?>`,
    },


1 commentaires

Merci, cette erreur est très trompeuse. Et il semble difficile de trouver la cause.



0
votes

Cette erreur a été décrite et résolue ici: https://github.com/vuejs/vue / issues / 9504

Une erreur dans le modèle génère une erreur dans JS en raison d'un bogue dans generateCodeFrame () ou répétez $ 1 () (peut être corrigé d'une manière ou d'une autre).


0 commentaires

0
votes

Un autre cas

Dans mon cas, cette erreur est due au fait que je répète le même attribut HTML

<div class="awesome wow anotherawesome">
</div>

Cela soulèvera le même problème.

Solution

<div class="awesome wow"
     class="anotherawesome">
</div>


0 commentaires