Angular-google-maps: Модуль не найден: '@agm/core/services/google-maps-types'

Созданный на 20 сент. 2019  ·  54Комментарии  ·  Источник: SebastianM/angular-google-maps

Внезапно я столкнулся со следующей проблемой.

Модуль не найден: ошибка: не удается разрешить «@agm/core/services/google-maps-types»

Пакет.json

"@agm/ядро": "^1.0.0",
"@agm/js-marker-clusterer": "^1.0.0"

Самый полезный комментарий

@jimmykane , вы должны убедиться, что в вашем package.json указано "@agm/core: "1.0.0-beta.7" , а не @agm/core: "^1.0.0-beta.7" , потому что это будет означать, что у вас есть выпуск 1.0.0 , который не предоставляет тот же интерфейс.

Мы работаем над исправлением этого, но есть и другие импорты, которые нам нужно решить.

Все 54 Комментарий

То же самое

можете ли вы удалить node_modules и повторно запустить npm install

@ doom777 Я делал это несколько раз. неудачно.

Пример фрагмента кода ниже,

import { ZoomControlOptions, ControlPosition, MapTypeControlOptions, FullscreenControlOptions } from '@agm/core/services/google-maps-types';
mapTypeControlOptions:MapTypeControlOptions = {
    position: ControlPosition.LEFT_BOTTOM
    }

  fullscreenControlOptions: FullscreenControlOptions = {
    position : ControlPosition.LEFT_CENTER
  };

хм, у stackblitz сейчас свои проблемы. У меня не получается воспроизвести.

вот что я пытаюсь:

ng new agm-test2
cd agm-test2
npm install @agm/core
code .

добавить AgmCoreModule.forRoot в AppModule

шаблон: <agm-map [mapTypeControl]="true" [mapTypeControlOptions]="mapTypeControlOptions" [latitude]="0" [longitude]="0"></agm-map>

компонент:

import { Component } from '@angular/core';
import { MapTypeControlOptions, ControlPosition } from '@agm/core/services/google-maps-types';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styles: ['agm-map{height:300px}']
})
export class AppComponent {

  mapTypeControlOptions: MapTypeControlOptions = {
    position: ControlPosition.LEFT_BOTTOM
  };
}

результат:
image

@ doom777 вот пример того, как это не работает: https://stackblitz.com/edit/angular-krqwfi?file=src%2Fapp%2Fapp.module.ts
все, что я сделал, это добавил @agm/core и попытался импортировать FitBoundsService

я просто получаю

Uncaught (в обещании) Ошибка: Preset не указан в конфигурации на
Object.config(webcontainer.5f16b010d2745c788a2.js:15)
в t.config(webcontainer.5f16b010d2745c788a2.js:15)
в Be (превью-4858aaa60d96ac0657bab.js:1)
в предварительном просмотре-4858aaa60d96ac06

57bab.js:1

Кажется, это ошибка stackblitz

Можешь попробовать что-нибудь?

  1. клонировать эту библиотеку
  2. перейти к packages\core\map-types.ts
  3. добавить ControlPosition в список экспорта
  4. собрать библиотеку с помощью yarn build
  5. связать библиотеку с npm link (учебники Google, если вы раньше не использовали ссылку npm)
  6. посмотрите, начнет ли он работать

Пожалуйста, попробуйте мой PR https://github.com/SebastianM/angular-google-maps/pull/1730 и сообщите нам, решит ли он проблему.

Вам придется изменить импорт ControlPosition и других на «@agm/core».

@ doom777 Я клонировал, собрал и протестировал # 1730. Это работает, как и ожидалось.

@ doom777 похоже, это связано с тем, как ng-packager упаковывает вещи.

Вместо того, чтобы заставлять людей обновлять свой импорт один раз для этого, а затем для # 1648, должны ли мы просто сосредоточиться на выпуске # 1648, который будет обрабатывать любой импорт карт Google? (Ваше изменение для #1730 может потребоваться для директив/сервисов, которые не импортируются через @agm/core, а вместо этого импортируются из @agm/core/{directives,services}

Просто чтобы было ясно, что ng-packagr был потенциально критическим изменением в отношении поверхности API, где # 1648 нарушает ту же самую поверхность (импорт типов карт Google)

Я добавил # 1731, который является изменением ng-packagr для этого модуля, но он не касается импорта из @agm/core/* , которые не являются @agm/core/services/google-maps-types (включая @agm/core/services или @agm/core/directives ).

Я получаю эту ошибку, когда пытаюсь импортировать {google} из @agm/core/services/google-maps-types. Я также много раз пытался удалить node_modules и перезапустить npm install. Пожалуйста, помогите мне найти решение.

@pasqualepalmaccio , если это рабочая версия, вернитесь к 1.0.0-beta.7. В противном случае подождите, пока мы не выпустим исправление.

После обновления у меня такая же проблема. Есть ли обходной путь?

@jimmykane , вы должны убедиться, что в вашем package.json указано "@agm/core: "1.0.0-beta.7" , а не @agm/core: "^1.0.0-beta.7" , потому что это будет означать, что у вас есть выпуск 1.0.0 , который не предоставляет тот же интерфейс.

Мы работаем над исправлением этого, но есть и другие импорты, которые нам нужно решить.

у нас есть исправление, просто временная проблема с его слиянием

Я все еще вижу эту проблему. Это исправление объединено?

нет, не могу найти другого участника, чтобы утвердить мой PR :(

Это исправление объединено?

Может быть, отказаться от версии 1.0.0, пока вы работаете над исправлением?

У вас такая же проблема при попытке импорта:

импортировать { ZoomControlOptions, ControlPosition, ZoomControlStyle} из '@agm/core/services/google-maps-types';

Просто зарегистрируйтесь, чтобы получить уведомление об исправлении. Сейчас будут использоваться жестко запрограммированные магические значения.

вы можете использовать 1.0.0-бета.7 на данный момент.
1.0.1 скоро выйдет, я пытаюсь связаться с Себастьяном Гольштейном, но безуспешно

привет @SebastianM waky waky .... Пожалуйста, давай, давай поднимем это

1.0.0-beta.7 не работает с IVY, поэтому в настоящее время мы не можем использовать этот пакет.

Bump @SebastianM, пожалуйста, поддерживайте это репо. Слить и отпустить.

Для 1 человека работает, мы все здесь боремся.

Может, нам стоит просто раскошелиться? Очевидно, что люди заинтересованы в использовании этого пакета.

Или: https://drewdevault.com/2018/12/04/How-to-abandon-a-FLOSS-project.html
Или даже: https://www.codeshelter.co/

Возможно, Себастьян может просто добавить правильные привилегии для коллабораций здесь
и вуаля проблема решена.

В сб, 2 ноября 2019 г., 12:37 Лукас Нойманн, уведомления@github.com написал:

Может, нам стоит просто раскошелиться? Достаточно ясно, что люди заинтересованы в использовании
этот пакет.

Или: https://drewdevault.com/2018/12/04/How-to-abandon-a-FLOSS-project.html
Или даже: https://www.codeshelter.co/


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/SebastianM/angular-google-maps/issues/1729?email_source=notifications&email_token=AAJVX45GD4L46U7JGGD7FMDQRVQ7FA5CNFSM4IYS2YRKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEC4Z6DY#issuecomment-549035791 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AAJVX45ENBM22GNL6UEF26TQRVQ7FANCNFSM4IYS2YRA
.

я осознаю

Module not found: Error: Can't resolve '@agm/core/services' хотя он установлен!!

@agm/ядро: 1.0.0-бета.3

Может попробовать обновиться до 1.0.0-beta.7?

как мне его обновить? -> npm установить 'agm/core 1.0.0-beta.7'?

ну, npm install @agm/[email protected] или npm update @agm/core

Решается без обновления. Я старался

import { GoogleMapsAPIWrapper } from '@agm/core';

и он успешно работает.

Ok. Кроме того, вам, вероятно, не следует использовать GOogleMapsAPIWrapper.

Почему не могли бы вы объяснить? @doom777

Почему не могли бы вы объяснить? @doom777

Я считаю, что GoolgeMapsAPIWrapper предназначен только для внутреннего использования в библиотеке, а не для нас, ее потребителей. Вы должны использовать привязки ввода и событий к основному компоненту. В своем модуле вы импортируете AgmCoreModule и forRoot в своем разделе импорта.

Если вы хотите получить прямой доступ к API карт Google, вы можете получить карту из (mapReady) в компоненте, например:

<agm-map [streetViewControl]="false" [latitude]="lat" [longitude]="lng" [styles]="mapStyles" [zoom]="defaultZoom" [zoomControlOptions]="zoomControlOptions" (mapReady)="mapReady($event)" (zoomChange)="zoomChanged($event)"> </agm-map>

В коде компонента:

mapReady(map: google.maps.Map) { this.map = map; }

И вы можете печатать для своей карты, установив @types/googlemaps

@Toomavic
GoogleMapsApiWrapper предназначен для работы с библиотекой или расширениями. Это обязательно, что противоречит декларативному стилю Angular. Большинство вещей, которые вы будете делать с GMAW, вы сможете делать с входами и выходами на agm-map и его дочерних элементах.

@ermcgrat вы также можете получить большинство типов из «@agm/core», по крайней мере, до тех пор, пока # 1648 не будет объединен

Спасибо, ребята .. Большое спасибо 😍😍😍😍😍

Привет почему тема закрыта?
1.1.0 не исправляет

Что ж, @jimmykane версии 1.1.0 позволяет:

import { ControlPosition } from '@agm/core'

Всем привет,

1.1.0 у меня тоже не исправляет. У меня еще есть это:
Module '"../../../../node_modules/@agm/core/agm-core"' has no exported member 'MapTypeControlStyle'
Несмотря на то, что он экспортируется:
image

Я уже пытался удалить node_modules и package-lock, но не лучше...

Я все еще получаю эту ошибку тоже.
Module not found: Error: Can't resolve '@agm/core/services/google-maps-types'
Я пытаюсь получить доступ, например, к google.maps.geometry.spherical.computeArea() . Я могу добиться этого, установив @types/googlemaps , а затем import {} from 'googlemaps'; , но это кажется хакерским, плюс IntelliJ Idea помечает его как неиспользуемый импорт. _Оптимизировать импорт_ затем удаляет эту строку и ломает код.
Пожалуйста, это можно исправить? 🙏🏻

попробуйте импортировать {GoogleMapsAPIWrapper} из '@agm/core';

вместо импорта {GoogleMapsAPIWrapper} из '@agm/core/service';

Это все еще не исправлено в 1.1.0. Можно ли его снова открыть и обработать?

Я сталкиваюсь с этой ошибкой. Пробовал разные версии, ошибка осталась...

для всех тех, кто «все еще» сталкивается с этой ошибкой, не делайте глубокий импорт, делайте поверхностный.

Привет @ doom777 это адресовано?

да, если вы используете новую версию 3.0.0, полностью удалите импорт, так как мы больше не упаковываем проприетарные типы Google. Если вы используете 1.1.0, просто импортируйте типы из @agm/core , а не глубоко внутри библиотеки.

Не могли бы вы немного помочь мне здесь?

Теперь я вижу, что AGM может получить QueryList mapControls: QueryList<AgmMapControl>;

Теперь мы делаем это как что?

До этого было:

 public mapTypeControlOptions: MapTypeControlOptions = {
    // mapTypeIds: [MapTypeId.HYBRID, MapTypeId.ROADMAP, MapTypeId.SATELLITE, MapTypeId.TERRAIN],
    mapTypeIds: ['hybrid', 'roadmap', 'satellite', 'terrain'],
    position: ControlPosition.LEFT_TOP,
    style: 0
  };

И по шаблонам:

<agm-map *ngIf="activitiesMapData.length > 0"
             [mapTypeId]="user && user.settings ? user.settings.mapSettings.mapType : 'roadmap'"
             (mapTypeIdChange)="changeMapType($event)"
             [fullscreenControl]="true"
             [mapTypeControl]="true"
             [scaleControl]="true"
             [rotateControl]="true"
             [zoomControl]="true"
             [gestureHandling]="'cooperative'"
             [scrollwheel]="null"
             [mapTypeControlOptions]="mapTypeControlOptions"
             [zoomControlOptions]="zoomControlOptions"
             [rotateControlOptions]="rotateControlOptions"
             [tilt]="45"
             [controlSize]="32"
             [disableDefaultUI]="true"
             [styles]="getStyles(theme)"
             [streetViewControl]="false">

ну давай разногласия для дальнейшего обсуждения, а в принципе

<agm-map *ngIf="activitiesMapData.length > 0"
             [mapTypeId]="user && user.settings ? user.settings.mapSettings.mapType : 'roadmap'"
             (mapTypeIdChange)="changeMapType($event)"
             [gestureHandling]="'cooperative'"
             [scrollwheel]="null"
             [mapTypeControlOptions]="mapTypeControlOptions"
             [zoomControlOptions]="zoomControlOptions"
             [rotateControlOptions]="rotateControlOptions"
             [tilt]="45"
             [controlSize]="32"
             [disableDefaultUI]="true"
             [styles]="getStyles(theme)"
             [streetViewControl]="false">
   <agm-fullscreen-control></agm-fullscreen-control>
   <agm-scale-control></agm-scale-control>
   <agm-map-type-control [style]="style" [mapTypeIds]="mapTypeIds" [position]="position"></agm-map-type-control>

@ doom777 Понял. Увидел, что это было там, и мне было интересно присоединиться или нет :-D

Позвольте мне попробовать ваш совет. Я не знал, что они теперь элементы. Намного лучше

да, если вы используете новую версию 3.0.0, полностью удалите импорт, так как мы больше не упаковываем проприетарные типы Google. Если вы используете 1.1.0, просто импортируйте типы из @agm/core , а не глубоко внутри библиотеки.

Привет @ doom777 У меня все еще есть некоторые проблемы после обновления моего проекта:

ERROR in node_modules/@agm/js-marker-clusterer/services/google-clusterer-types.d.ts:1:60 - error TS2307: Cannot find module '@agm/core/services/google-maps-types' or its corresponding type declarations.

1 import { GoogleMap, LatLngBounds, Marker, MVCObject } from '@agm/core/services/google-maps-types';

Я хотел бы воспользоваться вашим советом не делать глубокий импорт, но, к сожалению, это все еще имеет место в @agm/js-marker-clusterer. Я что-то пропустил?

Используются следующие версии:

"@agm/core": "3.0.0-beta.0",
"@agm/js-marker-clusterer": "^1.1.0",

Заранее спасибо!

У вас несоответствие версии. Если вы используете angular 10, используйте @agm/[email protected] и @agm/[email protected] .
Если вы используете Angular 9 и более ранние версии, используйте @agm/[email protected] и @agm/[email protected]

У вас несоответствие версии. Если вы используете angular 10, используйте @agm/[email protected] и @agm/[email protected] .
Если вы используете Angular 9 и более ранние версии, используйте @agm/[email protected] и @agm/[email protected]

Это сработало. Но мне нужно было обновить с:

import { AgmJsMarkerClustererModule } from '@agm/js-marker-clusterer';

к:

import { AgmMarkerClustererModule } from '@agm/markerclusterer'

В моем модуле. По какой-то причине не работали [streetViewControl] и [zoomControl] . После их удаления заработало нормально. Я проверю в документах, если что-то изменилось для этих свойств.

Кроме того, что касается @agm/markerclusterer , я думаю, что документация может быть обновлена ​​как можно скорее.

Правильный. Параметры управления были удалены в пользу подэлементов управления.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

matishw picture matishw  ·  3Комментарии

Halynsky picture Halynsky  ·  3Комментарии

n1t3w0lf picture n1t3w0lf  ·  3Комментарии

shedar picture shedar  ·  4Комментарии

DeveloperAdd007 picture DeveloperAdd007  ·  3Комментарии