问题产生的原因是Scully插件不支持使用ESM(ECMAScript Modules)模块的require()函数。因此,需要修改插件中使用的代码,使用CommonJS模块来代替ESM模块。
以下是一个可能的解决方法,假设我们的Scully插件称为firestore.routes.ts:
npm install @firebase/app @firebase/firestore @angular/fire --save
// 导入所有所需的模块
const firebase = require('@firebase/app'); // CommonJS模块
require('@firebase/firestore'); // 更改全局require,以在应用程序中启用Firestore
import { AngularFirestore } from '@angular/fire/firestore';
// 核心逻辑
export async function fetchRoutes(): Promise {
// 初始化Firestore
const firebaseApp = firebase.initializeApp({
// ...配置数据
});
const db = firebaseApp.firestore();
// 从Firestore中获取路由
const routes: string[] = [];
await db.collection('routes').get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
routes.push(doc.data().route);
});
});
return routes;
}
// Scully.config.ts
export const config = {
// ...配置数据
routes: {
// ...
},
plugins: [
// ...其他插件
require('./firestore.routes').fetchRoutes
]
};
注意:在使用上述代码时,需要根据所需的实际场景进行适当的修改和调整。