Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Symfony 4] tarteaucitron

Sujet résolu
    3 juillet 2019 à 9:38:38

    Bonjour,

    J'essaye désespérément depuis des heures et des heures d'importer tarteaucitron.js dans un projet symfony en suivant le même procédure que pour les autres modules, mais rien à faire je n'y arrive pas...

    yarn add tarteaucitronjs --dev

    Mon fichier cookies.js qui est dans assets

    // assets/js/cookies.js
    
    // global.tarteaucitron = require('tarteaucitronjs/tarteaucitron.js');
    require('tarteaucitronjs/tarteaucitron.js');
    
    console.log(tarteaucitron)

    Config webpack

    var Encore = require('@symfony/webpack-encore');
    
    if (!Encore.isRuntimeEnvironmentConfigured()) {
        Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev');
    }
    
    Encore
        .setOutputPath('public/build/')
        .setPublicPath('/build')
    
        .addEntry('app', './assets/js/app.js')
        .addEntry('cookies', './assets/js/cookies.js')
    
        .splitEntryChunks()
        .enableSingleRuntimeChunk()
        .cleanupOutputBeforeBuild()
        .enableBuildNotifications()
        .enableSourceMaps(!Encore.isProduction())
        .enableVersioning(Encore.isProduction())
    
        .configureBabel(() => {}, {
            useBuiltIns: 'usage',
            corejs: 3
        })
    ;
    
    module.exports = Encore.getWebpackConfig();
    

    erreur: Uncaught ReferenceError: tarteaucitron is not defined

    Webpack étant très flou pour moi je n'arrive pas savoir si c'est un bout de code de config que j'oublie ou tout simplement si le module n'est pas compatible avec webpack.

    Comment je peux accéder à cette variable tarteaucitron qui est dans tarteaucitron .js ???

    (Je commence à croire que je vais devoir mettre à la main le script JS...)

    Merci d'avance de vos réponse

    -
    Edité par BigChicChicken 3 juillet 2019 à 9:39:25

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 juillet 2019 à 9:59:23

      J'ai l'impression que ce script est fait pour être balancé dans l'espace global 🤮

      Peut-être que le ProvidePlugin pourrait aider.

      -
      Edité par Anonyme 3 juillet 2019 à 12:23:37

      • Partager sur Facebook
      • Partager sur Twitter
        3 juillet 2019 à 14:46:52

        Je viens d'essayer le ProvidePlugin:

        .addPlugin(new webpack.ProvidePlugin({
                'tarteaucitron': 'tarteaucitronjs/tarteaucitron.js'
            }))

        Mais ça revient au même que:

        var tarteaucitron = require('tarteaucitronjs/tarteaucitron.js');

        Quand je fais le console.log(tarteaucitron), je me retrouve avec un objet vide...


        -
        Edité par BigChicChicken 3 juillet 2019 à 14:47:23

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 juillet 2019 à 14:53:08

          Ah oui il faut que le module exporte quelque chose pour que ça marche. Du coup c'est le exports-loader qu'il te faut. Aucune idée de comment le configurer avec Encore par contre.

          • Partager sur Facebook
          • Partager sur Twitter
            4 juillet 2019 à 9:39:19

            Je te remercie MatTheCat de toutes tes pistes, j'abandonne tarteaucitron pas parce que je n'y arrive, mais parce que le script est tout pourris...

            Il faut définir la variable en global, le fichier de langage ne peut pas être chargé sans devoir modifier le nom ou retoucher le script et je ne suis pas allez plus loin mais je pense que pour les services c'est la même chose.

            Je met quand même un tuto pour montrer comment charger n'importe qu'elle module qui ne possède pas de export:

            - Installation du loader :

            yarn add exports-loader --dev

            - Configuration du loader dans le webpack.config.js :

            Encore
                .addLoader({
                    test: /tarteaucitron\.js$/,
                    use: [{ 
                        loader: 'exports-loader?tarteaucitron'
                    }]
                })
            
                // .addLoader({
                //     test: {{ Expression régulière qui testera les chemins des require }},
                //     use: [{ 
                //         loader: 'exports-loader?{{ variables à exporter }}'
                //     }]
                // })

            - Importation des scripts :

            require('tarteaucitronjs/css/tarteaucitron.css');
            global.tarteaucitron = require('tarteaucitronjs/tarteaucitron.js');
            require('tarteaucitronjs/lang/tarteaucitron.fr.js');
            
            tarteaucitron.init({
            	"privacyUrl": "",
            	"hashtag": "#tarteaucitron",
            	"cookieName": "tarteaucitron",
            	"orientation": "top",
            	"showAlertSmall": true,
            	"cookieslist": true,
            	"adblocker": false,
            	"AcceptAllCta" : true,
            	"highPrivacy": false,
            	"handleBrowserDNTRequest": false,
            	"removeCredit": false,
            	"moreInfoLink": true,
            	"useExternalCss": true,	              
            	"readmoreLink": "/cookiespolicy"
            });




            • Partager sur Facebook
            • Partager sur Twitter

            [Symfony 4] tarteaucitron

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown