【发布时间】:2019-08-26 07:35:28
【问题描述】:
技术:Angular Cli、Angular 7、Angular Google Maps、Firebase Functions。
问题:我正在尝试为我的 Angular 通用应用程序提供服务,但在构建时遇到 Angular 谷歌地图错误。
错误我得到:
/Users/test/Public/Leisure/leisure-app/functions/node_modules/@agm/core/services/managers/info-window-manager.js:1
(function (exports, require, module, __filename, __dirname) { import {
Observable } from 'rxjs';
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
似乎 Angular Universal 不喜欢第三方库。
我关注的资源: https://hackernoon.com/deploying-angular-universal-v6-with-firebase-c86381ddd445
我的应用模块:
import { AgmCoreModule } from '@agm/core';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { AngularFireDatabase } from '@angular/fire/database';
import { AngularFireModule } from '@angular/fire';
import { ServiceWorkerModule } from '@angular/service-worker';
import { AngularFireStorageModule } from '@angular/fire/storage';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule } from '@angular/common';
import { GooglePlaceModule } from 'ngx-google-places-autocomplete';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { NgModule, NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { NgxErrorsModule } from '@hackages/ngxerrors';
import { ReactiveFormsModule, FormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { TruncateModule } from 'ng2-truncate';
import { MetaModule } from '@ngx-meta/core';
import { PreventDoubleSubmitModule } from 'ngx-prevent-double-submission';
// Core App
import { AppComponent } from './app.component';
import { CoreInterceptor } from './interceptor';
import { environment } from '../environments/environment';
// Modules
import { SharedModule } from './shared/shared.module';
import { CoreModule } from './services/core.module';
import { LayoutModule } from './layouts/layout.module';
// Sections
import { COMPONENTS } from './components/index';
import { ROUTES } from './app.routes';
// Guards
import { AuthGuard } from './guards/auth.guard';
import { CreditGuard } from './guards/credit.guard';
@NgModule({
declarations: [
AppComponent,
COMPONENTS
],
imports: [
CommonModule,
FormsModule,
AngularFireModule.initializeApp(environment.firebase),
AngularFireAuthModule,
AngularFirestoreModule,
AngularFireStorageModule,
// This is the Angular google maps module causing issue on build
AgmCoreModule.forRoot({
apiKey: environment.googleApiKey,
libraries: ['places']
}),
GooglePlaceModule,
LayoutModule,
BrowserModule.withServerTransition({ appId: 'test123' }),
PreventDoubleSubmitModule.forRoot(),
TruncateModule,
MetaModule.forRoot(),
HttpClientModule,
NgxErrorsModule,
ReactiveFormsModule,
RouterModule.forRoot(ROUTES),
CoreModule,
SharedModule,
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
],
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: CoreInterceptor, multi: true },
AuthGuard,
CreditGuard,
AngularFireDatabase
],
exports: [ RouterModule ],
schemas: [ NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
我运行的命令:serve:npm run build && firebase serve --only 函数
最新错误(对于 npm run serve:ssr):
来自 serve:ssr: 的错误代码:
e.Lb=function(a,b,c){a=this.ka.J[String(a)];if(!a)return!0;a=a.concat();for(var d=!0,f=0;f<a.length;++f){var g=a[f];if(g&&!g.Sa&&g.capture==b){var k=g.listener,p=g.Ob||g.src;g.Eb&&this.Le(g);d=!1!==k.call(p,c)&&d;}}return d&&0!=c.Be};e.jb=function(a,b,c,d){return this.ka.jb(String(a),b,c,d)};var ub=h.JSON.stringify;function vb(a,b){this.Sf=100;this.ef=a;this.ug=b;this.Zb=0;this.Pb=null;}vb.prototype.get=function(){if(0<this.Zb){this.Zb--;var a=this.Pb;this.Pb=a.next;a.next=null;}else a=this.ef();return a};vb.prototype.put=function(a){this.ug(a);this.Zb<this.Sf&&(this.Zb++, a.next=this.Pb, this.Pb=a);};function I(){this.lc=this.Va=null;}var xb=new vb(function(){return new wb},function(a){a.reset();});I.prototype.add=function(a,b){var c=this.Af();c.set(a,b);this.lc?this.lc.next=c:this.Va=c;this.lc=c;};I.prototype.remove=function(){var a=null;this.Va&&(a=this.Va, this.Va=this.Va.next, this.Va||(this.lc=null), a.next=null);return a};I.prototype.wg=function(a){xb.put(a);};I.prototype.Af=function(){return xb.get()};function wb(){this.next=this.scope=this.Gc=null;}
wb.prototype.set=function(a,b){this.Gc=a;this.scope=b;this.next=null;};wb.prototype.reset=function(){this.next=this.scope=this.Gc=null;};function yb(a){h.setTimeout(function(){throw a;},0);}var zb;
【问题讨论】:
-
我在某些地方读到,您可以使用 webpack 配置文件将第三方库列入白名单。但不知道该怎么做。
-
this issue 中的 cmets 可能会给您一些提示。 One comment 建议使用
import-export或禁用 AoT 编译作为解决方法。 Another comment 建议将--bundle-dependencies=all添加到ng build命令或"bundleDependencies": "all"到configurationsinangular.json。 -
@ConnorsFan 这些链接似乎不适用于 Angular 版本 7 应用程序
-
@AngularM 在你说它在 v7 中不起作用之前看看这里,不知道你是否尝试过
ng:stackoverflow.com/questions/39996655/…
标签: angular firebase google-cloud-functions angular-universal angular-google-maps