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

JavaScript Discussion :

Installation d'un package via npm


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 38
    Points : 47
    Points
    47
    Par défaut Installation d'un package via npm
    Bonjour,

    Voilà, je suis coincé au tout début d'un cours portant sur la librairie three.js ( librairie dédiée à la 3D). Je veux installer three.js via npm.
    J'ai exécuté à la lettre les instrcutions disponibles ici:
    Discover three.js
    https://discoverthreejs.com

    J'ai donc appliqué:
    npm init
    npm install --save three.js.
    Je vois bien un dossier node-modules dans mon projet avec three.js dedans ( je ne peux pas coller de capture d'écran).
    Voici mon code basique juste pour tester l'installation:
    HTML:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>test three.js</title>
      </head>
      <body>
        <div id="three-container">
          <canvas></canvas>
        </div>
      </body>
      <script type="module" src="script.js"></script>
    </html>
    Js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import {Camera} from 'three'
     
    const container = document.getElementById('three-container');
    console.log(container);
    Voilà: mon navigateur, lancé via live server depuis vs code, me dit qu'il n'accède pas au module three.js. Plus précisément, j'ai ça:
    Uncaught TypeError: Error resolving module specifier “three”. Relative module specifiers must start with “./”, “../” or “/”.
    A noter que, dans la doc, il est bien noté d'importer directement ainsi: import {Camera} from 'three'

    Veuillez me croire lorsque je vous dis que je cherche déjà depuis mal de temps. C'est sans doute une erreur idiote mais je ne vois pas.
    Merci d'avance pour votre aide.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 956
    Points : 44 116
    Points
    44 116
    Par défaut
    Bonjour,

    Dans le navigateur, import doit avoir une URL relative ou absolue.

    / par rapport à la racine, /file.js
    ./ dans le même répertoire, le . (point) défini l'emplacement courant, ./file.js
    ../ on remonte d'un répertoire, ../modules/files.js
    Le plus simple est de faire des essais et de regarder l'erreur que tu auras dans la console.

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 38
    Points : 47
    Points
    47
    Par défaut re
    Bonjour,

    Tout d'abord, merci pour ta réponse. Le souci est que je ne suis pas sûr de la comprendre.

    Citation Envoyé par NoSmoking Voir le message
    Bonjour,

    Dans le navigateur, import doit avoir une URL relative ou absolue.
    J'ai fait des recherches pour comprendre cette phrase. Je pense que quand tu dis "dans le navigateur", tu te réfères à l'environnement d'exécution js: navigateur vs node.js. J'ai bon?
    Mon objectif est bien de faire fonctionner dans le navigateur et je crois que tu me conseilles d'utiliser les "relative URL" plutôt que les "module specifiers", si j'ai bien compris mes lectures.
    Mais dans ce cas, pour chaque import d'un élément de three.js, je dois spécifier le chemin exact menant à l'élément. J'ai bon?

    Dans ce cas, c'est bien peu pratique. En lisant la doc, il semble que je doive utiliser un mécanisme de "bundling" de type webpack pour regrouper tout le code javascript dans un seul fichier. A ce moment-là, il n'y aura plus de souci avec la "résolution des modules". Je mets entre guillemets pour souligner le fait que je maîtrise mal mon propre propos.

    Bon, je vais essayer la solution qui consiste à importer le code depuis CDN. Cela semble plus adapté à mon niveau.
    J'ai peur que la solution "webpack" soit lourde et je ne trouve pas de ressource simple m'expliquant comment m'y prendre.

    Là où je suis surpris, c'est que le livre discover three.js que je mentionne à l'origine semble faire l'impasse sur ces difficultés. Peut-être ai-je mal compris quelque chose.

    Merci d'avance pour ceux/celles qui prendront le temps pour me dire si je suis dans le juste.

    Raphaël

  4. #4
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Bon, je me réponds à moi-même.
    Je pense que ce que j'ai écrit dans le message précédent était juste.
    J'ai trouvé dans les annexes du livre dont j'ai parlé certaines confirmations:
    https://discoverthreejs.com/book/app...cript-modules/
    Il faut bien un système type webpack pour utiliser des imports directs de modules sans préciser le chemin.

    Merci encore à noSmoking qui m'a aiguillé.

    Raphaël

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [npm] installation d'un package npm
    Par HAM_10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/09/2017, 19h53
  2. Probleme installation cordova via npm (EACCESS)
    Par JohnBegood dans le forum Mac OS X
    Réponses: 0
    Dernier message: 22/10/2013, 14h10
  3. Désinstaller un package via dpkg ?
    Par ibtisss dans le forum Debian
    Réponses: 6
    Dernier message: 15/02/2006, 15h22
  4. [ORACLE 9i] Install et MAJ BD via installshield 11.5
    Par alvine dans le forum Installation
    Réponses: 1
    Dernier message: 01/02/2006, 18h46
  5. Installation de Windows XP via le serveur de mon réseau
    Par TheBAT dans le forum Windows XP
    Réponses: 1
    Dernier message: 03/11/2005, 15h34

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