38 votes

Comment ajouter un fichier js externe dans la bibliothèque angular 6

Je suis en train de créer une bibliothèque angulaire (version 6) qui est basée sur angular material pour laquelle je dois inclure la bibliothèque hammer js.

Je sais que dans angular 6, on peut ajouter la bibliothèque js externe dans la section angular.json sous la configuration du projet. Mais cela ne fonctionne pas dans le cas de la bibliothèque ci-dessus. J'ai essayé d'ajouter la bibliothèque externe de la manière suivante.

"my-library": {
  "root": "projects/my-library",
  "sourceRoot": "projects/my-library/src",
  "projectType": "library",
  "architect": {
    "build": {
      "builder": "@angular-devkit/build-ng-packagr:build",
      "options": {
        "tsConfig": "projects/my-library/tsconfig.lib.json",
        "project": "projects/my-library/ng-package.json",
        "scripts": [
          "../node_modules/hammerjs/hammer.min.js"
        ]
      }
    }
}

Mais j'obtiens cette erreur.

La validation du schéma a échoué avec les erreurs suivantes : Le chemin de données "" ne doit PAS avoir de propriétés (scripts) supplémentaires.

Veuillez suggérer la manière correcte d'ajouter un fichier js externe dans la bibliothèque angulaire.

1 votes

Soit vous avez une faute de frappe quelque part dans votre code actuel, soit il s'agit d'un bug, et vous devriez déposer un rapport de bug auprès de la cli angulaire. Il n'y a aucun problème avec le code que vous venez de poster.

0 votes

0 votes

@nikhil avez-vous trouvé une solution à ce problème ? Je suis dans une situation similaire et import * ou require ne fonctionnent pas.

1voto

Jorge Vega Points 19

Vous pouvez ajouter votre bibliothèque externe dans le tsconfig.lib.jso n fichier.

Ouvrez ce fichier et ajoutez votre bibliothèque de désirs sous types que vous pouvez trouver dans compilateurOptios . Je vous donne un exemple. Dans mon cas, j'ai référencé la bibliothèque à partir du module node de mon projet. Vous pouvez faire de même avec votre bibliothèque hammer.js. Bonne chance

using types to configure external js file

3 votes

Impossible d'ajouter un fichier js personnalisé avec cette approche

1voto

Helzgate Points 11

En ce qui concerne l'exemple spécifique de l'OP qui essaie d'ajouter hammer.js. Il suffit de npm installer hammerjs puis d'éditer votre fichier main.ts et d'ajouter import 'hammerjs' puis il sera disponible dans le monde entier.

Voir aussi ce article.

0voto

Emon Zan Points 70

Vous devriez essayer la commande ci-dessous si vous avez utilisé angular version 1.x auparavant. Et cela fonctionne pour moi.

ng update @angular/cli --migrate-only --from=1.7.4

0 votes

J'ai déjà fait ça. Mais j'obtiens toujours la même erreur. J'utilise la version 6.0.8 d'Angular/Cli.

0 votes

Bonjour @nikhil, j'ai mis à jour la réponse. Veuillez essayer de cette façon.

0voto

Paul Cheriyan Points 23

Ajoutez d'abord la librairie dans index.html ou dans

"scripts": [
"node_modules/hammerjs/hammer.min.js"
]

npm install d3 --save

npm install @types/d3 --save-dev

Si la bibliothèque n'a pas de typages disponibles dans @types/, vous pouvez toujours l'utiliser en ajoutant manuellement des typages pour elle :

  1. Tout d'abord, créez un typings.d.ts dans votre src/ dossier. Ce fichier sera automatiquement inclus dans la définition du type global.

  2. Ensuite, en src/typings.d.ts ajoutez le code suivant :

    declare module 'typeless-package';
  3. Enfin, dans le composant ou le fichier qui utilise la bibliothèque, ajoutez le code suivant :

    import * as typelessPackage from 'typeless-package';
    
    typelessPackage.method();

veuillez suivre le lien

-2voto

Krishna Rathore Points 3912

Supprimer ../ avant le chemin de node_modules

"scripts": [
    "node_modules/hammerjs/hammer.min.js"
]

5 votes

Ne fonctionne pas avec cette approche. Je reçois toujours la même erreur. Ce n'est pas un problème de chemin. C'est essentiellement la propriété script qui n'est pas autorisée dans le cas de la configuration de la bibliothèque. Cela fonctionne bien pour l'application de test mais pas pour la bibliothèque.

0 votes

Cette réponse ne résoudra peut-être pas tout le problème, mais Krishna a raison, je n'ai pas l'équipement nécessaire pour le faire. ../ dans mon angular.json et mon application se construit parfaitement bien.

0 votes

@ArnaudP Votre application est-elle de type bibliothèque ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X