我有一个大问题。 我目前正在为我的 api 实现身份验证和验证中间件。 但问题是 firebase-admin 使用的模块无法在 nextjs 中运行,因为它们是 Edge Runtime 模块。 现在我总是收到错误:边缘运行时不支持 Node.js 'os' 模块。错误信息。
这是跟踪堆栈:
Server Error
Error: The edge runtime does not support Node.js 'os' module.
Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime
This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
<unknown>
webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/globals.js (42)
Object.apply
webpack-internal:///(middleware)/./node_modules/next/dist/esm/server/web/globals.js (42:19)
eval
webpack-internal:///(middleware)/./node_modules/firebase-admin/lib/app/credential-internal.js (38:20)
eval
webpack-internal:///(middleware)/./node_modules/firebase-admin/lib/app/credential-internal.js (44:3)
Object.(middleware)/./node_modules/firebase-admin/lib/app/credential-internal.js
file:/C:/x/x/.next/server/src/middleware.js (1708:1)
我有一个 firebase-admin.ts 文件:
import * as admin from 'firebase-admin';
if (!admin.apps.length) {
admin.initializeApp({
credential: admin.credential.cert(JSON.parse(process.env.FIREBASE_SERVICE_ACCOUNT as string)),
});
}
const firestore = admin.firestore();
const auth = admin.auth();
export { firestore, auth };
我在中间件内部使用 auth 来验证每个 api 请求。 看起来我无法使用 firebase-admin lib,因为它使用 os 模块。