使用 --prod 标志构建时的 AngularFireFunctions 注入错误
AngularFireFunctions injection error when building with --prod flag
我在模态中使用 AngularFireFunctions,它在开发中运行良好,但现在我已经使用 --prod 标志进行编译,但出现以下错误。
我确定这是由于 angular.json 文件中的“"optimization": true”设置和模态的使用所致。如果我将其设置为 false 它可以工作,我有另一个项目工作正常但我无法确定差异。
我尝试使用最新版本的所有内容从头开始创建一个新的 Angular 8 项目,但我遇到了完全相同的问题。
如果我从构造函数中删除 "private functions: AngularFireFunctions",它就不会出现错误。
这是错误:
ERROR Error: Uncaught (in promise): TypeError: StaticInjectorError[n -> t]:
Object(...)(...).functions is not a function
TypeError: StaticInjectorError[n -> t]:
Object(...)(...).functions is not a function
at functions.js:25
at e.invoke (zone.js:391)
at t.run (zone.js:150)
at t.runOutsideAngular (core.js:17258)
at new t (functions.js:23)
at core.js:21273
at Bc (core.js:21235)
at Vc (core.js:21199)
at t.get (core.js:21907)
at core.js:9141
at j (zone.js:831)
at zone.js:741
at a (tslib.es6.js:68)
at e.invoke (zone.js:391)
at Object.onInvoke (core.js:17299)
at e.invoke (zone.js:390)
at t.run (zone.js:150)
at zone.js:889
at e.invokeTask (zone.js:423)
at Object.onInvokeTask (core.js:17290)
模态代码如下:
export class ElementsComponent implements OnInit {
@Input() amount: number;
@Input() description: string;
@Input() hasDefaultSource: boolean;
@ViewChild('cardNumberElement') cardNumberElement: ElementRef;
@ViewChild('cardExpiryElement') cardExpiryElement: ElementRef;
@ViewChild('cardCvcElement') cardCvcElement: ElementRef;
useAsDefaultSource = true;
stripe; // : stripe.Stripe;
card;
cardNumber;
cardExpiry;
cardCvc;
cardNumberErrors;
cardExpiryErrors;
cardCvcErrors;
cardErrors;
confirmation;
constructor(private auth: AuthService,
private functions: AngularFireFunctions,
public modal: NgbActiveModal,
private spinner: NgxSpinnerService) {}
App.module.ts:
import { AngularFireFunctions } from '@angular/fire/functions';
...
providers: [
AngularFireFunctions,
...
我的错误。应该是:
从'@angular/fire/functions'导入{AngularFireFunctionsModule};
...
进口:[
AngularFireFunctionsModule,
...
我在模态中使用 AngularFireFunctions,它在开发中运行良好,但现在我已经使用 --prod 标志进行编译,但出现以下错误。
我确定这是由于 angular.json 文件中的“"optimization": true”设置和模态的使用所致。如果我将其设置为 false 它可以工作,我有另一个项目工作正常但我无法确定差异。
我尝试使用最新版本的所有内容从头开始创建一个新的 Angular 8 项目,但我遇到了完全相同的问题。
如果我从构造函数中删除 "private functions: AngularFireFunctions",它就不会出现错误。
这是错误:
ERROR Error: Uncaught (in promise): TypeError: StaticInjectorError[n -> t]:
Object(...)(...).functions is not a function
TypeError: StaticInjectorError[n -> t]:
Object(...)(...).functions is not a function
at functions.js:25
at e.invoke (zone.js:391)
at t.run (zone.js:150)
at t.runOutsideAngular (core.js:17258)
at new t (functions.js:23)
at core.js:21273
at Bc (core.js:21235)
at Vc (core.js:21199)
at t.get (core.js:21907)
at core.js:9141
at j (zone.js:831)
at zone.js:741
at a (tslib.es6.js:68)
at e.invoke (zone.js:391)
at Object.onInvoke (core.js:17299)
at e.invoke (zone.js:390)
at t.run (zone.js:150)
at zone.js:889
at e.invokeTask (zone.js:423)
at Object.onInvokeTask (core.js:17290)
模态代码如下:
export class ElementsComponent implements OnInit {
@Input() amount: number;
@Input() description: string;
@Input() hasDefaultSource: boolean;
@ViewChild('cardNumberElement') cardNumberElement: ElementRef;
@ViewChild('cardExpiryElement') cardExpiryElement: ElementRef;
@ViewChild('cardCvcElement') cardCvcElement: ElementRef;
useAsDefaultSource = true;
stripe; // : stripe.Stripe;
card;
cardNumber;
cardExpiry;
cardCvc;
cardNumberErrors;
cardExpiryErrors;
cardCvcErrors;
cardErrors;
confirmation;
constructor(private auth: AuthService,
private functions: AngularFireFunctions,
public modal: NgbActiveModal,
private spinner: NgxSpinnerService) {}
App.module.ts:
import { AngularFireFunctions } from '@angular/fire/functions';
...
providers: [
AngularFireFunctions,
...
我的错误。应该是:
从'@angular/fire/functions'导入{AngularFireFunctionsModule}; ... 进口:[ AngularFireFunctionsModule, ...