angular - 动态提供一个模拟类会导致“装饰器不支持函数调用,但是......”在 prod 模式下出现错误
问题描述
我有一个 Angular 8(离子)项目。我想在哪里模拟一些本地提供者。我创建了这个类
import { AppVersion } from '@ionic-native/app-version/ngx';
import { Provider } from '@angular/core';
import { AppVersionMock } from './mocks/app-version.mock';
export class NativePluginsWithMocks {
public static getProviders(): Provider[] {
let providers;
const isCordovaEnvirionment = (window as any)['cordova'];
if (isCordovaEnvirionment) {
// Use device providers
providers = [AppVersion];
} else {
// Use browser providers
providers = [{ provide: AppVersion, useClass: AppVersionMock }];
}
return providers;
}
}
我在我的模块上提供它
import { NativePluginsWithMocks } from './native-plugins-with-mocks/native-plugins-with-mocks';
@NgModule({
declarations: [],
imports: [CommonModule],
providers: [
...NativePluginsWithMocks.getProviders(),
SplashScreen,
StatusBar,
ScreenOrientation,
NativeToast,
AdMobFree,
SecureStorage,
Device,
Market,
File,
AndroidPermissions,
InAppPurchase2,
Network,
NativeStorage,
{
provide: StorageService,
useFactory: storageServiceFactory,
deps: [Storage, NativeStorage, LoggerService, Platform]
}
]
})
export class IonicNativePluginsModule {}
它在模式下工作,dev
但在prod
模式下编译器会发送错误:
ERROR in Error during template compile of 'IonicNativePluginsModule' [ng] 装饰器不支持函数调用,但调用了'NativePluginsWithMocks'。
有没有办法让它在生产模式下工作?我想我可以将它包装在工厂中,但这意味着我必须为每个模拟创建大量样板代码。我看错了什么?
解决方案
推荐阅读
- selenium - Selenium - 自动化测试和边缘
- javascript - 如何通过插件将html5嵌入网站?
- c# - 禁用 SwipeView 滑动选项
- java - 如何指定 Stream.map 的输出类型?
- asp.net - 在 .Net Core 中运行时更新 Resx 文件
- linux - 在同一台linux机器上运行两个jenkins版本
- ksqldb - ksqldb REST API 推送查询 - 重新连接到上次使用的偏移量 + 1
- javascript - 从 URL 获取 JSON,适用于 PHP+AJAX,但不适用于 jQuery
- dataweave - 在 dataweave 2.0 中仅更新有效负载中的一个字段,而不涉及其他字段
- javascript - Tippy.js 事件委托 - 根据目标以交互方式决定何时显示工具提示