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

React Discussion :

Erreur : JSDOM is not a constructor


Sujet :

React

  1. #1
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut Erreur : JSDOM is not a constructor
    Bonjour
    Pourquoi l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const dom = new JSDOM ('<! DOCTYPE html><html><body></body></html>');
    donne l'erreur
    typeError : JSDOM is not a constructor at index.js
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Tu as cette erreur parce que JSDOM n'est pas définie... Si c'est cette librairie https://github.com/jsdom/jsdom que tu veux utiliser alors il te faut ajouter ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const jsdom = require("jsdom");
    const { JSDOM } = jsdom;
    Et il faudra installer le package jsdom avec npm par exemple...

  3. #3
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut React npm init
    Bonjour
    J'ai essayé cela mais j'ai des erreurs
    Dans mon fichier aulieu de faire const jsdom= require('jsdom'); j'ai écrit import JSDOM from "jsdom"; et avec const {JSDOM} = jsdom ; j'ai une erreur qui est :
    JSDOM est déjà déclaré
    Merci

  4. #4
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut
    Il faudrait nous donner tout le code du fichier plutôt que nous laisser jouer aux devinettes.

  5. #5
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut React npm init
    Bonjour
    Voici mon fichier sans le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import JSDOM from "jsdom";
    import ReactJSDOM from "react-jsdom";
    import React from "react";
    import ReactDOM from "react-dom";
     
    const dom = new JSDOM (`<DOCTYPE html><html><body></body></html>`);
    const document = dom.window.document;
    const h2 = document.createElement('h2');
    h2.textContent ='Hello';
    document.getElementById('mroot').appendChild(h2);

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Entre import et require, Il te faut choisir...

    Sinon en général pour démarrer et voir si la librairie fonctionne coorectement, on teste un code simple et basique comme celui qui est donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const jsdom = require("jsdom");
    const { JSDOM } = jsdom;
     
    const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
    console.log(dom.window.document.querySelector("p").textContent); // "Hello world"
    Essaye d'abord cela...

  7. #7
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut React npm init
    Bonjour
    J'ai bien compris, l'essai a bien fonctionné, node index.js affiche bien hello World
    Ce que je voudrais faire maintenant c'est afficher hello World dans le browser avec react et la fonction render
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ReactDOM.render (<h2>hello World</h2>, document.getElementById('mroot'));
    La fonction render dans le fichier index.js pour afficher hello World et le conteneur avec un id='mroot' dans un autre fichier index.html.
    Le serveur je l'écris dans index.js
    Merci

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Eh bien si on se base sur le code que tu as posté c'est normal qu'il ne fonctionne pas car il y a quelques erreurs : il manque un "!" (<!DOCTYPE et non <DOCTYPE) et surtout l'instruction document.getElementById('mroot').appendChild(h2); pose problème car dans le code HTML, il n'y a pas d’élément ayant 'mroot' comme id.

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    je pense que la première des choses que tu ais à faire est d'utiliser la version 18.x de React qui date quand même depuis plus d'un an. (Release 18.0.0 (March 29, 2022)).

    Tu pourras lire dans ce lien que, entre autres :
    createRoot: New method to create a root to renderor unmount. Use it instead of ReactDOM.render. New features in React 18 don't work without it.
    ... en gros oublie ReactDOM.render !

    Pour débuter la documentation est bien faite et donne un exemple des plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const root = ReactDOM.createRoot(
      document.getElementById('root')
    );
    const element = <h1>Hello, world</h1>;
    root.render(element);
    Tu trouveras cela la doc. au paragraphe : Le rendu des éléments.

  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Je précise pour éviter toute ambiguïté que le code (dont je parle au message 8) c'est celui posté au message 5 et non celui posté au message 7...

  11. #11
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut installer babel et importer babel
    Je voudrais installer babel et importer babel librairie dans mon fichier index.js pour résoudre l'erreur syntaxError Unexpected token '<'
    Je voudrais savoir comment faire
    Merci

  12. #12
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut
    Babel n'a rien à voir avec votre erreur et je ne vois pas comment cette idée vous est venue. Mais qui suis-je pour vous empêcher d'installer Babel ? Voici la marche à suivre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://babeljs.io/docs/usage

  13. #13
    Membre actif
    Homme Profil pro
    data science
    Inscrit en
    Novembre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : data science

    Informations forums :
    Inscription : Novembre 2022
    Messages : 31
    Par défaut Ajouter mon serveur à ce code
    Bonjour
    Je voudrais ajouter le serveur web express à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    const jsdom= require ("jsdom");
    const {JSDOM} = jsdom ;
    const dom= new JSDOM (`<! DOCTYPE html><p>Hello World</p>`);
    const express= require ("express");
    const app = express ();
    const port = 8000;
    app.listen (port, ()=> {
     console.log (`The server is listening on port ${port}`);
      console.log (dom.window.document.querySelector("p").textContent);
    });

Discussions similaires

  1. React npm init
    Par hamath dans le forum React
    Réponses: 0
    Dernier message: 27/10/2023, 08h34
  2. nodejs react-app npm
    Par hamath dans le forum NodeJS
    Réponses: 0
    Dernier message: 22/04/2023, 00h26
  3. [FEDORA] Problème d'init
    Par Ultra-FX dans le forum RedHat / CentOS / Fedora
    Réponses: 7
    Dernier message: 13/04/2004, 10h22
  4. [debutant] [servlets] methode init()
    Par be_on_edge dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 01/03/2004, 15h11
  5. [CR7] Erreur CanNot initalize OLE
    Par elifqaoui dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 17/07/2003, 22h03

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