IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Discussion :

[WEBPACK] module not found pour webpack en test mais pas pour vue-cli en dev


Sujet :

Outils

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 76
    Points : 58
    Points
    58
    Par défaut [WEBPACK] module not found pour webpack en test mais pas pour vue-cli en dev
    Salut à tous,

    Je possède un projet en Vue.js sur lequel je souhaiterais mettre en place des tests unitaires des composants de vue.js.
    Mon application marche très bien. Elle est dockerisé et utilise vue-cli pour fournir l’exécution du code en dev (à travers vue-cli-service serve)

    Maintenant j'essaie de mettre Webpack en place sur le projet afin de fournir un environnement pour lancé des tests en local comme expliqué par vue.js ici :
    Test unitaires vue.js

    Lorsque je lance ma commande qui correspond au paramétrage suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mochapack --webpack-config webpack.config.js --require test/setup.js test/**/*.spec.js
    Webpack génère des erreurs lors du chargement d'un composant vue qui charge d'autres composants comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import AppButton from '../components/Button'
    en mentionnant : "Module not found: '../components/Button' in '/Users/xxxx/Sites/xxxx/xxxxx/xxxxxx/src/page'"

    Le fichier qui génère ces erreurs est effectivement dans le dossier page. Mais j'ai besoin de charger d'autres composants vue.js qui se trouve ailleurs dans l'arborescence que voici :


    projet
    ---- dist
    ---- node_modules
    ---- public
    ---- src
    ---- ---- assets
    ---- ---- components
    ---- ---- ----- Button.vue
    ---- ---- mixins
    ---- ---- page
    ---- ---- ----- Home.vue
    ---- main.js
    ---- test
    package.json
    webpack.config.js


    Ainsi j'essaie d'écrire un test pour le composant Home.vue qui cherche à charger le composant Button.vue qu'il ne trouve pas (uniquement en test car en dev tout fonctionne parfaitement).

    Voici mon fichier de configuration webpack :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    const nodeExternals = require('webpack-node-externals')
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
    const path = require('path')
     
    module.exports = {
        externals: [nodeExternals()],
        devtool: 'inline-cheap-module-source-map',
        entry: './main.js',
        context: path.resolve(__dirname+'/src', 'src'),
        resolve: {
            modules: [path.resolve(__dirname, 'src'), 'node_modules']
        },
        module: {
            rules: [
                {test: /\.vue$/, loader: 'vue-loader'},
                {test: /\.scss$/, use: [{loader: 'style-loader'}, {loader: 'css-loader'}, {loader: 'sass-loader'}]}
            ]
        },
        plugins: [
            new VueLoaderPlugin()
        ],
    }
    Auriez-vous des pistes afin de mieux comprendre pourquoi cela ne fonctionne pas svp ?

    Merci pour votre éclairage.

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    C'est pas normal d'avoir besoin de webpack pour lancer tes TU. Si t'as besoin de webpack c'est que c'est pas des TU.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 76
    Points : 58
    Points
    58
    Par défaut
    C'est pas normal d'avoir besoin de webpack pour lancer tes TU. Si t'as besoin de webpack c'est que c'est pas des TU.
    Je trouve ta remarque étonnante (je ne critique pas je cherche à comprendre) car j'essaie de mettre en place des TU suivant les indications du site de vuejs que j'ai mentionné plus haut.
    Celui-ci se base sur l'outil mochapack qui à un nom très explicite dans le fait d'avoir un outil de test qui utilise webpack pourtant.

    D'après toi si je n'ai pas besoin de webpack pour lancer des TU de composants Vue comment puis-je procéder autrement ?

    Concernant mon principal problème, je l'ai résolu.

    J'ai recupéré la config webpack incluse dans l'outil vue-cli-service qui mentionne utiliser l'alias '@' pour la resolution des modules js.
    Au début je ne souhaitais pas utiliser cette technique car je voulais être cohérent entre mon env de dev et de test. Mais comme de base l'outil de vue js l'utilise
    alors je l'ai mis dans ma config webpack de test et cela semble fonctionner.
    Il s'agissait de la règle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        resolve: {
            alias: {
                '@': '/Users/xxxx/xxxx/xxxxx/xxxxx/xxxxxx/src',
                vue$: 'vue/dist/vue.runtime.esm.js'
            },
            extensions: [
                '.mjs',
                '.js',
                '.jsx',
                '.vue',
                '.json',
                '.wasm'
            ],
            modules: [
                'node_modules',
                '/Users/xxxx/xxxx/xxxxx/xxxxx/xxxxxx/node_modules',
                '/Users/xxxx/xxxx/xxxxx/xxxxx/xxxxxx/@vue/cli-service/node_modules'
            ]
        },
    Ainsi que ce soit pour mes test ou mon dev je peux déclarer mes imports de code js avec le caractère @ au debut.

    Vous me direz maintenant pourquoi je n'utilise pas tout simplement la config du vue-cli-service pour mes tests ?
    Lorsque j'essaie je me retrouve avec toute une nouvelle série d'erreurs à gérer. Je procède donc pas à pas mais cela débordera du sujet du topic.

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Webpack sert à générer un livrable. Un test unitaire s'exécute contre une fonction de ton code source, pas du livrable, donc webpack est inutile.

    Je te déconseille l'usage des CLI en général quelque soit l'outil (Angular, Vue, React, whatever), ça cache toute la mécanique et ça t'empêche de comprendre soi-disant pour aller plus vite, sauf qu'au premier vrai problème tu perds huit fois le temps économisé initialement.

    Il faut mettre les mains dans le cambouis dès le départ, un CLI sert pour faire un POC à l'arrache pas pour dev un vrai projet.

    Je te conseille d'utiliser Jest pour tes tests unitaires plutôt que Mocha qui est plutôt un outil utilisé en dev node. Dans le tuto linké je pense que le but de l'usage de webpack est justement de palier à ça mais ça m'a tout l'air d'une belle usine à gaz.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2015
    Messages : 76
    Points : 58
    Points
    58
    Par défaut
    Je suis parfaitement d'accord avec toi, que si on peut éviter d'utiliser les CLI intégré il faut éviter. D'ailleurs j'aurais compris ma problématique plus rapidement si effectivement l'application ne passait pas par ce CLI de vue.Js. Malheureusement parfois on ne décide pas de tout donc pour cela pour le moment je dois faire avec.

    Concernant ma problématique de test maintenant, j'aimerais bien comprendre ce qui se passe avant de changer de solution éventuelle.
    Mais je prend bonne notes de tes conseils et je pense que je testerais JEST effectivement...

    Et merci pour tes réponses

Discussions similaires

  1. [MySQL] 404 Not Found pour localhost/phpmyadmin/
    Par hardShield dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/03/2013, 23h29
  2. Réponses: 2
    Dernier message: 17/12/2010, 13h49
  3. entrypoint not found pour certaines fonctions
    Par saffff dans le forum C#
    Réponses: 1
    Dernier message: 23/06/2010, 23h24
  4. Modprobe FATAL : Module not found
    Par Quebec dans le forum Linux
    Réponses: 3
    Dernier message: 27/04/2010, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo