我正在构建在不同客户端中安装的应用程序。 为此,我使用了不同的环境,例如
environment.costumer1.ts environment.costumer2.ts
事实是,有些客户使用Services Workers,而另一些则没有,所以我创建了两个不同的app.module.ts
app.module.ts
app.module-without-service-worker.ts
因此,当客户端要求我提供不带Service Worker的应用程序时(我使用的通知服务是我不想显示谁不想要的服务),我将其放置在fileReplacements内的angular.json中
{
"replace": "src / app / app.module.ts",
"with": "src / app / app.module-without-service-worker.ts"
}
不好的是,在构建主应用程序时,出现以下错误:
错误:在D中键入AppComponent:/ developments / Patient Portal / 患者门户演示/ pp演示前端/ src / app / app.component.ts是 2个模块的声明的一部分:D中的AppModule:/发展 /患者门户/患者门户演示/ pp演示前端/ src /应用/ D中的app.module.ts和AppModule:/ developments / Patient Portal / 患者门户演示/ pp演示前端/ src / app / app.module- 没有service-worker.ts!
是否可以从环境中排除文件?
答案 0 :(得分:0)
你不能使用
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
只需在您的环境属性中定义一个标志。 看到 https://blog.angular-university.io/angular-service-worker/
答案 1 :(得分:0)
如果client1和client2有单独的版本,则只需执行以下操作
打开angular.json文件并找到行
"serviceWorker": true
如果您要激活服务人员,则该值为true,否则为false。
答案 2 :(得分:0)
我建议您在环境文件中创建一个属性。
environmentx.ts
export const environment = {
production: false;
serviceWorker: false;
};
app.module.ts
imports: [
BrowserModule,
AppRoutingModule,
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.serviceWorker && environment.production})
],
答案 3 :(得分:0)
我在为自己寻找答案时找到了你的帖子。
我尝试了基于构建配置加载不同组件(和不同路由配置)的方法,并且对我有用。
在Angular 9中工作。
这是我的angular.json:
"build": {
...
"configurations": {
"custom": {
"fileReplacements": [
{
"replace": "projects/my-app/src/app/app.module.ts",
"with": "projects/my-app/src/app/app.module-custom.ts"
}
]
},
...
},
...
}
...
"serve": {
...
"configurations": {
...
"app": {
"browserTarget": "rest-generator-app:build:custom"
}
}
}
然后,当我投放我的应用程序时:
ng serve my-app --port=3000 -o --configuration=custom