在一起,有多少标签太多了?
javascript - 将 Firebase 模拟器与 AngularFire 一起使用
问题描述
我正在尝试在我的 Angular7 应用程序中使用新推出的Firestore 模拟器。
根据这个文档,我运行开发服务器127.0.0.1:8080
:
firebase serve --only firestore
那么,之后ng serve
,我怎样才能让我的 AngularFire 模块使用数据库模拟器呢?
我在我的environment.ts
:
export const environment = {
production: false,
name: 'local',
firebase: {
databaseURL: "http://127.0.0.1:8080"
}
};
但它不起作用,因为它需要一个“projectId”。我尝试将其设置为我的预生产 Firestore 数据库,但随后未使用开发服务器。
有没有想过?
这是我的app.module.ts
:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from '@app/app-routing.module';
import { AppComponent } from '@app/app.component';
import { AngularFireModule } from '@angular/fire';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { AngularFireStorageModule } from '@angular/fire/storage';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { environment } from '@env/environment';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
AngularFireModule.initializeApp(environment.firebase, 'my-super-cool-app'),
AngularFirestoreModule,
AngularFireAuthModule,
AngularFireStorageModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
解决方案
我通过在主应用程序模块中添加一个提供程序来实现它,该提供程序覆盖了环境文件设置的一些变量。
请参阅angularfire repo 中对问题的此答案。示例(来自答案):
{
provide: FirestoreSettingsToken,
useValue: environment.production ? undefined : {
host: 'localhost:8081',
ssl: false
}
}
由于我有几个不同的环境,我让条件查找环境中的“模拟器”属性,如果它是 false 或未定义则返回 undefined,而不是查找生产属性并在存在时返回 undefined:
{
provide: FirestoreSettingsToken, useValue: environment.emulator ? {
host: 'localhost:8081',
ssl: false
} : undefined
}
FirestoreSettingsToken
已更改为SETTINGS
in@angular/fire/firestore
模块
推荐阅读
- python-3.x - 如何执行函数以等待该函数具有来自 filechooser.open_file() 的路径?
- html - 何时使用
和 - django - django-channels 中的套接字上的 mqtt
- php - 更改 Laravel Auth 中检查密码的方法
- python - discord.utils.find 和 discord.utils.get 不断返回 None
- c++ - 我必须在 C++ 中创建一个幂函数,但它不起作用
- laravel - 尝试为特定用户 ID 存储和编辑产品
- dll - Windows Pyinstaller ImportError:带有 PyQt5 的 DLL
- applescript - 如何在 InDesign 中使用 applescript 通过脚本标签选择文本框?
- c++ - 在有效和无效的非类型参数包之间进行选择