IGNF / geoportal-extensions

French Geoportal Extensions for well-known javascript mapping libraries (Leaflet and OpenLayers)
https://ignf.github.io/geoportal-extensions/
Other
64 stars 33 forks source link

Problème de compilation avec Angular 7 et Typescript 3 #242

Closed zemoa closed 5 years ago

zemoa commented 5 years ago

Bonjour,

J'aimerais utiliser votre extension dans mon aplication Angular mais j'ai un problème de compilation. J'utilise la dépendance npm et j'obtiens l'erreur suivante : ./node_modules/geoportal-access-lib/src/Services/CommonService.js Module not found: Error: Can't resolve '../../package' in '/***/node_modules/geoportal-access-lib/src/Services'

Dans mon fichier j'utilise l'extension comme suit : ... import { Services, LExtended as L } from 'geoportal-extensions-leaflet'; ... export class OsmObj ... { ... private initMap(): void { L.map........ ... }

Pourriez-vous m'aider ?

lowzonenose commented 5 years ago

Cf. Exemples d'utilisation des extensions dans un projet Front-End : https://github.com/IGNF/geoportal-third-party-integration

Ce n'est pas toujours à jour, mais ça pourrait vous aider.

zemoa commented 5 years ago

Merci pour votre réponse, mais j'ai essayé de lancer le projet simple-map-openlayers-angular (celui qui se rapproche le plus de notre problématique) mais lors de l'xécution de npm install j'ai des erreurs : Invalid response body while trying to fetch https://registry.npmjs.org/...

lowzonenose commented 5 years ago

Utiliser plutôt le projet "simple-map-leaflet-meteor-angular".

zemoa commented 5 years ago

J'ai réussi à faire fonctionner le projet simple-map-openlayers-angular. J'ai essayé d'y inclure l'extension pour leaflet (avec une instanciation de leaflet), et là je me heurte au même message d'erreur. Il semble être résolue en ajoutant l'extension à l'import du package dans 3 bibliothèques (CommonService.js, Gp.js et index.js) cependant après j'ai d'autres erreurs. Le projet "simple-map-leaflet-meteor-angular" est, lui, basé sur Angularjs et n'utilise pas TypeScript.

lowzonenose commented 5 years ago

Exact..., je rencontre le même souci. L'appel dans les sources du fichier package.json avec un import n'est pas reconnu !? J'ai modifié l'appel : import pkg from package --> import pkg from package.json

lowzonenose commented 5 years ago

Fixé avec les releases 3.0.2 pour openlayers / 2.1.2 pour leaflet

ojathelonius commented 4 years ago

Bonjour,

Cette solution est-elle toujours d'actualité ? geoportal-extensions-openlayers ne contient aucun fichier de déclaration TypeScript, par conséquent le CLI Angular (8+) ne parvient pas à résoudre geoportal-extensions-openlayers dans un fichier TypeScript. Cela fonctionne sans souci en JavaScript cependant, et permet donc d'utiliser les objets Services et olExtended avec un fichier de déclaration TS (.d.ts).

Serait-il utile d'implémenter des déclarations TypeScript complètes (possiblement à intégrer dans @types/geoportal-extensions) ?

[EDIT] Erratum, en fait c'est lié au paramètre noImplicitAny de tsconfig.json qui, si true, requiert un fichier de déclaration TypeScript dans toutes les libs importées.

RupertBarrow commented 3 months ago

Pour les récents lecteurs de cette demande, sachez que j'ai mis à jour l'application simple-map-leaflet-angular du repo geoportal-third-party-integration pour Angular 18 et TypeScript 5.5 : https://github.com/IGNF/geoportal-third-party-integration/pull/40

Cette mise à jour repose sur un patch proposé pour geoportal-extensions-leaflet 2.4.1.