通常,这个错误是由于尝试在NodeJS环境中使用浏览器特定的代码而导致的。一种解决方法是将你的代码修改为可以在NodeJS环境中运行,或者将其限制在浏览器环境中运行。另外,你还可以尝试更新所有相关的依赖项以确保它们与你的Angular版本兼容。以下是一个可能会导致这个错误的示例代码:
import {Injectable} from '@angular/core';
import {AngularFirestore} from '@angular/fire/firestore';
@Injectable()
export class MyService {
constructor(private afs: AngularFirestore) {}
async doSomething() {
const doc = this.afs.doc('/my/path');
const data = await doc.get().toPromise();
// ...
}
}
如果你在这里运行 doc.get()
,则会引发错误。在这种情况下,你需要使用 runOutsideAngular
方法来确保 doc.get()
在服务器上运行:
import {Injectable} from '@angular/core';
import {AngularFirestore} from '@angular/fire/firestore';
import {runOutsideAngular} from '@angular/core';
@Injectable()
export class MyService {
constructor(private afs: AngularFirestore) {}
async doSomething() {
const doc = this.afs.doc('/my/path');
const data = await runOutsideAngular(() => doc.get().toPromise());
// ...
}
}