【问题标题】:NEXT AUTH + Firebase Cannot import statement outside a moduleNEXT AUTH + Firebase 无法在模块外导入语句
【发布时间】:2022-11-13 11:20:36
【问题描述】:

所以我们有一个firebase配置文件:

import { getFirestore } from "firebase/firestore";

export const firebaseConfig = {
  apiKey: process.env.FIREBASE_API_KEY,
  authDomain: process.env.FIREBASE_AUTH_DOMAIN,
  projectId: process.env.FIREBASE_PROJECT_ID,
  storageBucket: process.env.FIREBASE_STORAGE_BUCKET,
  messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID,
  appId: process.env.FIREBASE_APP_ID,
  measurementId: process.env.FIREBASE_MEASUREMENT_ID,
};

// Initialize Firebase
const firebaseApp = initializeApp(firebaseConfig);

export const firebaseStore = getFirestore(firebaseApp);

和 NEXT AUTH [...nextauth].ts

import GoogleProvider from "next-auth/providers/google";
import { FirestoreAdapter } from "@next-auth/firebase-adapter";
import { firebaseConfig } from "../../../config/firebase";

export const authOptions = {
  providers: [
    GoogleProvider({
      clientId: process.env.FIREBASE_AUTH_GOOGLE_CLIENT_ID!,
      clientSecret: process.env.FIREBASE_AUTH_WEB_CLIENT_SECRET!,
    }),
  ],
  adapter: FirestoreAdapter(firebaseConfig),
};

export default NextAuth(authOptions);

问题是我总是面临错误

Error - H:\JS\ktest\node_modules\@next-auth\firebase-adapter\dist\index.js:1
import { initializeApp } from "firebase/app";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:360:18)
    at wrapSafe (node:internal/modules/cjs/loader:1088:15)
    at Module._compile (node:internal/modules/cjs/loader:1123:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
    at Module.load (node:internal/modules/cjs/loader:1037:32)
    at Module._load (node:internal/modules/cjs/loader:878:12)
    at Module.require (node:internal/modules/cjs/loader:1061:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at @next-auth/firebase-adapter (H:\JS\ktest\.next\server\pages\api\auth\[...nextauth].js:22:18)
    at __webpack_require__ (H:\JS\ktest\.next\server\webpack-api-runtime.js:33:42)

我尝试使用“type”:“module”等更改 package.json 和 tsconfig,但我会导致更多错误,这不应该是解决此问题的方法。

我在这个问题上苦苦挣扎了一段时间,再也无法在网上找到任何答案,我觉得 stackoverflow 是我最后的希望。

【问题讨论】:

    标签: reactjs typescript firebase next.js next-auth


    【解决方案1】:

    我猜代码中的“firebase-adapter”与模块和 CommonJS 有问题。 所以,我直接修改文件来解决这个问题。 (导入-> 要求)

    在你的情况下 'H:JSktest ode_modules@next-authirebase-adapterdist index.js' 和 'H:JAltest node_modules@next-authirebase-adapterdistconverter.js'

    index.js ->

    const { initializeApp } = require("firebase/app");
    const { addDoc, collection, deleteDoc, doc, getDoc, getDocs, getFirestore, limit, query, runTransaction, setDoc, where, connectFirestoreEmulator, } = require("firebase/firestore");
    const { getConverter } = require("./converter");
    module.exports.FirestoreAdapter = ({ emulator, ...firebaseOptions }) => {
    

    转换器.js->

    const { Timestamp } = require("firebase/firestore");
    const isTimestamp = (value) => typeof value === "object" && value !== null && value instanceof Timestamp;
    module.exports.getConverter = (options) => ({
    

    像这样。

    【讨论】:

      【解决方案2】:

      这似乎是firebase-adapter@1.0.2 的问题。我通过降级到 v1.0.2 解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2022-09-28
        • 2023-02-08
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 2021-05-29
        • 2021-07-02
        • 2021-01-05
        • 2021-12-03
        相关资源
        最近更新 更多