![](/img/trans.png)
[英]Cannot use import statement outside a module, TypeScript NodeJS Firebase Functions project
[英]NEXT AUTH + Firebase Cannot import statement outside a module
所以我們有一個 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)
我嘗試用“類型”:“模塊”等更改 package.json 和 tsconfig,但我導致了更多錯誤,這不應該是解決此問題的方法。
我在這個問題上苦苦掙扎了一段時間,再也無法在網上找到任何答案,我覺得 stackoverflow 是我最后的希望。
我猜想代碼中的“firebase-adapter”與模塊和 CommonJS 有問題。 所以,我直接修改文件來解決這個問題。 (導入 -> 要求)
在你的情況下 'H:\JS\ktest\node_modules@next-auth\firebase-adapter\dist\index.js' 和 'H:\JS\ktest\node_modules@next-auth\firebase-adapter\dist\converter.傑斯'
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 }) => {
coverter.js ->
const { Timestamp } = require("firebase/firestore");
const isTimestamp = (value) => typeof value === "object" && value !== null && value instanceof Timestamp;
module.exports.getConverter = (options) => ({
像這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.