Angular-google-maps: لا يعمل تجميع AOT.

تم إنشاؤها على ٨ سبتمبر ٢٠١٦  ·  31تعليقات  ·  مصدر: SebastianM/angular-google-maps

وصف المشكلة
لا تعمل خرائط google-angular2 في تجميع AOT.

خطوات إعادة إنتاج وعرض بسيط للمشكلة

الخطوة 1. مشروع استنساخ angular2-seed . (
الخطوة 2. تثبيت حزمة angular2-google-maps .
الخطوة 3. قم بتكوين SYSTEM_CONFIG_DEV و SYSTEM_BUILDER_CONFIG

tools/config/project.config.ts

export class ProjectConfig extends SeedConfig {
    ...
    // angular2 google maps SYSTEM_CONFIG_DEV
    this.SYSTEM_CONFIG_DEV.paths['angular2-google-maps/core'] = `node_modules/angular2-google-maps/core/index.js`;
    this.SYSTEM_CONFIG_DEV.packages['angular2-google-maps/core'] = {  main: 'index.js', defaultExtension: 'js' };

    // angular2 google maps SYSTEM_BUILDER_CONFIG
    this.SYSTEM_BUILDER_CONFIG.paths['angular2-google-maps/core'] = `node_modules/angular2-google-maps/core/index.js`;
    this.SYSTEM_BUILDER_CONFIG.packages['angular2-google-maps/core'] = {  main: 'index.js', defaultExtension: 'js' };
}

الخطوة 4. اكتب الكود على موقعك الشروع في العمل
الخطوة 5. npm start (عملت بشكل جيد)
الخطوة 6. npm run serve.prod (عملت بشكل جيد أيضًا).
الخطوة 6. npm run build.prod.exp ( حدث خطأ . يحتوي هذا الإصدار على تجميع AOT.)

السلوك الحالي

لم يعمل التحويل البرمجي AOT. (compile.ahead.prod)

...
[17:41:20] Starting 'build.prod.exp'...
[17:41:20] Starting 'clean.prod'...
[17:41:21] Deleted dist/prod
[17:41:21] Deleted dist/tmp
[17:41:21] Finished 'clean.prod' after 1.37 s
[17:41:21] Starting 'tslint'...
[17:41:26] Finished 'tslint' after 5.02 s
[17:41:26] Starting 'css-lint'...
[17:41:31] Finished 'css-lint' after 4.59 s
[17:41:31] Starting 'build.assets.prod'...
[17:41:31] Finished 'build.assets.prod' after 100 ms
[17:41:31] Starting 'build.html_css'...
[17:41:32] Finished 'build.html_css' after 1.25 s
[17:41:32] Starting 'copy.prod'...
[17:41:32] Finished 'copy.prod' after 54 ms
[17:41:32] Starting 'compile.ahead.prod'...
Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol AppModule in /home/ody12/workspace-mine/angular2-seed/dist/tmp/app/app.module.ts, resolving symbol AppModule in /home/ody12/workspace-mine/angular2-seed/dist/tmp/app/app.module.ts
    at simplifyInContext (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/static_reflector.ts:540:15)
    at StaticReflector.simplify (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/static_reflector.ts:544:18)
    at StaticReflector.annotations (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/static_reflector.ts:92:28)
    at _loop_1 (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/codegen.ts:63:48)
    at CodeGenerator.readFileMetadata (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/codegen.ts:57:22)
    at /Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/codegen.ts:105:56
    at Array.map (native)
    at CodeGenerator.codegen (/Users/iminar/Dev/angular/modules/@angular/compiler-cli/src/codegen.ts:105:33)
    at codegen (/home/ody12/workspace-mine/angular2-seed/tools/tasks/seed/compile.ahead.prod.ts:14:69)
    at Object.main (/home/ody12/workspace-mine/tools/@angular/tsc-wrapped/src/main.ts:44:12)
Compilation failed
...

السلوك المتوقع / المطلوب
أتمنى أن تعمل بشكل جيد. ساعدني.

angular2 & angular2-google-maps الإصدار

الزاوي 2: RC6
angular2-google-maps: "0.14.0"،

معلومات أخرى

شكرا للقراءة

urgent bug

التعليق الأكثر فائدة

basvdijk آسف يا شباب ، أقوم حاليًا بإعادة كتابة عملية الإنشاء لأتمكن من دعم AOT. توقع التحديثات في الأيام التالية.

ال 31 كومينتر

كيف يمكنك مشاركة كود app.module.ts الخاص بك؟ شكرا!

أرى نفس الشيء - ربما يتعلق الأمر بملف مفقود ngc -generated .metadata.json . انظر https://github.com/angular/angular/issues/11262

في الواقع ، يقترح فريق .metadata.json . يتم إنتاج هذه الملفات تلقائيًا بواسطة ngc.

قد تجد التعليقات أدناه مفيدة:

https://github.com/angular/angular/issues/11262#issuecomment -244449696

https://github.com/angular/angular/issues/11262#issuecomment -244472000

https://github.com/angular/angular/issues/11262#issuecomment -244489405

محادثة كاملة (https://github.com/angular/angular/issues/11262)

SebastianM هذا هو كود app.module.ts الخاص بي. شكرا لردكم !.

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { APP_BASE_HREF } from '@angular/common';
import { RouterModule } from '@angular/router';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { routes } from './app.routes';

import { AboutModule } from './about/about.module';
import { HomeModule } from './home/home.module';
import { SharedModule } from './shared/shared.module';
import { AgmCoreModule } from 'angular2-google-maps/core/index.js';
import { provideLazyMapsAPILoaderConfig } from 'angular2-google-maps/core';

@NgModule({
  imports: [
    BrowserModule,
    HttpModule,
    RouterModule.forRoot(routes),
    AboutModule,
    HomeModule,
    SharedModule.forRoot(),
    AgmCoreModule.forRoot()
  ],
  declarations: [AppComponent],
  providers: [
    {
      provide: APP_BASE_HREF,
      useValue: '<%= APP_BASE %>'
    },
    provideLazyMapsAPILoaderConfig({
      apiKey: 'key',
      clientId: ''
    })
  ],
  bootstrap: [AppComponent]

})

export class AppModule { }

@ rh389 @ naveedahmed1 كما قلت ، يبدو أنه يتطلب metadata.json . شكرا!.

SebastianM وهذا الفرع هو عينة رمز باستخدام خريطة جوجل.

DoyeonOhTravelHowdoyeonOh @ naveedahmed1 أشكر يا رفاق! سوف أتحقق منه هذا المساء.

لست متأكدًا من حالة هذا الإصلاح ، ولكن قد يكون من الجيد أيضًا مراجعة نفس المشكلة في ng2-translate .

أود أن أبرز فيه منشور مدونة يصف كيفية حل هذا بشكل عام وبعض الروابط إلى أمثلة repos للمكتبات لحل هذه المشكلة

لقد كتبت منشور المدونة الذي ذكرته. أنا سعيد لأنه أعجبك. أعتقد أن الخطأ الذي تواجهه لا يتعلق مباشرة بملفات metadata.json ، على الرغم من أنك ستحتاج إليها أيضًا. أعتقد أنه في مكان ما في الكود لديك export const blah = () => something والذي يجب تغييره إلى export function blah() { return something; } .

لقد كتبت مقالًا آخر يتطرق إلى حلول لبعض الأخطاء (بما في ذلك الخطأ Function calls are not supported ) لقد واجهت تحديث المكتبات لتكون متوافقة مع AoT.

+1 لدعم AoT
كانت تكافح أمس لدمج خرائط google-angular2 مع Ionic2 RC0

شكرا جزيلا!

modularcoder هل حصلت عليه بالفعل؟ حاولت تغيير lambda كما اقترحت وظيفتين أعلاه إلى وظيفة نمط المصنع والتصدير ، لكنها ما زالت تفشل.

lazarljubenovic فقط بدون AoT في بناء لـ dev env.

لقد وصفت الخطوات هنا
https://forum.ionicframework.com/t/angular2-google-maps-in-ionic-2/65736

تأكد من تثبيت أحدث إصدار من @ ionic / app-scripts والذي لا يقوم بإنشاء تجميع AoT أثناء إنشاء dev.
https://github.com/driftyco/ionic-app-scripts

modularcoder ماذا تفعل عندما تضطر إلى إنشاء التطبيق لنظام Android ، الخطأ موجود ... هل وجدت أي حل لذلك؟ ربما لا ينبغي أن نستخدم Ionic 2 للتطبيقات في هذه المرحلة ، فلا شيء يعمل حقًا ...

allurco نعم ، لقد تمكنت من إنشاء التطبيق بدون تجميع AoT عن طريق إضافة علامة "--dev" لإنشاء مهمة في package.json.

لقد قمت بإنشاء مثال الريبو
https://github.com/modularcoder/ionic2-angular2-google-maps-example/blob/master/README.md

الرجوع للقراءة لي لمزيد من المعلومات.

ملاحظة: تأكد من تثبيت أحدث إصدار من حزمة @ ionic / app-scripts.

SebastianM أي تحديث حول متى يمكن إصلاح هذا الخطأ؟ شكرا!

basvdijk آسف يا شباب ، أقوم حاليًا بإعادة كتابة عملية الإنشاء لأتمكن من دعم AOT. توقع التحديثات في الأيام التالية.

تضمين التغريدة جهدك مقدّر حقًا 👍

عظيم أن نرى هذا تم إصلاحه! هل لديك أي أفكار حول موعد إصدار هذا التحديث؟

هل تم إصلاحه؟ يؤدي استخدام angular2-google-maps مع AoT إلى ظهور الخطأ "حدث خطأ أثناء حل قيم الرموز بشكل ثابت. لا يتم دعم استدعاءات الوظائف. ضع في اعتبارك استبدال الوظيفة أو lambda بمرجع إلى وظيفة تم تصديرها ، وحل الرمز" هل يمكن لأي شخص أن يرشدك حول هذا؟

أعتقد أن الخطأ قد تم إصلاحه وأضيفت المشكلة في 0.16 علامة فارقة

@ naveedahmed1 بلغت نسبة 0.16.0 55٪ راجع https://github.com/SebastianM/angular2-google-maps/milestone/12

ربما أنا ، لكنني قمت بتثبيت المكتبة من مستودع GitHub وتلقيت المزيد من الخطأين:
Consider replacing the function or lambda with a reference to an exported function, resolving symbol LAZY_MAPS_API_CONFIG in /Users/william/Ionic/mapOnDevice1/node_modules/angular2-google-maps/src/core/services/maps-api-loader/lazy-maps-api-loader.ts, resolving symbol AgmCoreModule in /Users/william/Ionic/mapOnDevice1/node_modules/angular2-google-maps/src/core/core-module.ts,

أي شخص آخر ؟

@ tchinou1 كما ذكرنا سابقًا ، فإن المعلم الرئيسي لـ 0.16.0 مع دعم AoT هو 55٪ راجع https://github.com/SebastianM/angular2-google-maps/milestone/12 على حد علمي ، فإن أحدث إصدار تم إصداره يفعل لا تدعم AoT حتى الآن.

basvdijk بتشغيل npm install git+https://[email protected]/SebastianM/angular2-google-maps.git ألن يقوم بتثبيت الإصدار مع التعديلات؟

staticint يمكن أن يكون هذا هو الحال بالفعل. ربما يمكن أن يصف SebastianM كيف يمكنك تثبيت أحدث إصدار git بدعم AoT.

تحرير: آسف ، أنا مخطئ - يجب أن يتم إنشاء تثبيت npm بالفعل لك.

من خلال سحب الريبو مباشرة باستخدام npm ، فإنك تحصل فقط على المصدر ، وليس الأصول المبنية.

من الناحية النظرية يمكن أن استنساخ هذه الريبو، بناء عليه محليا، ومن ثم الارتباط الآلية الوقائية الوطنية مع المشروع الخاص بك، ولكن هذا ربما العملي فقط من أجل التنمية المحلية. أو يمكنك تحميل tarball للبناء في مكان ما وسحب ذلك باستخدام npm .

هل يعرف أي شخص كيفية تثبيته من مستودع GitHub؟

شكرا

@ tchinou1 إنه مستندات npm .

سؤال. لقد قمت للتو بتشكيل الفرع الرئيسي واستنساخه وبنائه وربطه npm وفي مشروعي الحالي أحصل على Uncaught Error: Can't resolve all parameters for LazyMapsAPILoader: (?, WindowRef, DocumentRef). . أقوم باستيراد هذا lib في وحدة تحميل كسول مع الكود التالي في الوحدة النمطية الخاصة بي imports :

AgmCoreModule.forRoot({
    apiKey: 'xxx',
}),

حاولت إنشاء مشروع أسود جديد وحاولت إعادة إنتاج الموقف إلى الحد الأدنى ، لكنه يعمل في الريبو الآخر لذلك ليس لدي أي فكرة من أين أبدأ في البحث. يبدو الأمر كما لو أنه لا يتلقى الكائن الذي تم تمريره عبر طريقة forRoot .

أي شخص لديه نفس الموقف أو رسالة الخطأ هذه؟ أعلم أنها لقطة طويلة بدون أي رمز وخطأ غير قابل للتكرار ، لكني خرجت من الأفكار.

كيف يمكنني تحديث خرائط جوجل الزاوية الخاصة بي حتى يعمل AOT؟ هل إصدار AOT متوفر الآن؟

لجعل AOT يعمل ، أضف "angular2-google-maps": "^0.16.0", إلى ملفك package.json

ثم في مكون التطبيق الخاص بك ، قم باستيراد الوحدة:

import { AgmCoreModule } from 'angular2-google-maps/core';

وأضفه إلى وارداتك (استبدل xxxx بمفتاح api الخاص بك)

NgModule({
  declarations: [],
  imports: [
    AgmCoreModule.forRoot({
      apiKey: 'xxxxxxxxxxxxxxxxxxxxx'
    })
  ],

الآن في القالب الخاص بك يمكنك استخدام المكون مثل:

        <sebm-google-map disableDefaultUI="true" [zoom]="zoom" [latitude]="location.latitude" [longitude]="location.longitude">

            <sebm-google-map-marker [latitude]="location.latitude" [longitude]="location.longitude"></sebm-google-map-marker>

        </sebm-google-map> 

أنا أستخدم 0.17.0 معلم ، والخطأ أدناه مستمر.
"لا يمكن العثور على اسم" google ".
"لا يمكن العثور على مساحة الاسم" google "

تم تصحيح هذا الخطأ بالفعل؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات