Firebase による Cloud Functions の正しい関数のデプロイを教えてください!!

実現したいこと:Firebase による Cloud Functions デプロイ

前提

Next.js 13 で Web アプリケーションを作っています。

ディレクトリ・ファイル構成

functions -- | - lib/ - index.js | index.js.map | - node_modules/ | - src/ - .eslintrc.js - administraotor.ts - email.ts - group.ts - index.ts - session.ts - user.ts .gitignore .package.json .package-lock.json prettierrc tsconfig.json tsconfig.dev.json

発生している問題・エラーメッセージ

/src/.eslintrc.js 0:0 error Parsing error: File '.eslintrc.js' not found /src/administrator.ts 0:0 error Parsing error: File '.eslintrc.js' not found /src/email.ts 0:0 error Parsing error: File '.eslintrc.js' not found /src/group.ts 0:0 error Parsing error: File '.eslintrc.js' not found /src/index.ts 0:0 error Parsing error: File '.eslintrc.js' not found /src/session.ts 0:0 error Parsing error: File '.eslintrc.js' not found /src/user.ts 0:0 error Parsing error: File '.eslintrc.js' not found ✖ 16 problems (16 errors, 0 warnings) Error: functions predeploy error: Command terminated with non-zero exit code 1

該当のソースコード

// src/eslintrc.js module.exports = { root: true, env: { es6: true, node: true, }, extends: [ "eslint:recommended", "prettier", "plugin:import/errors", "plugin:import/warnings", "plugin:import/typescript", "google", "plugin:@typescript-eslint/recommended", ], parser: "@typescript-eslint/parser", parserOptions: { project: ["tsconfig.json", "tsconfig.dev.json"], sourceType: "module", }, ignorePatterns: [ "/lib/**/*", // Ignore built files. ], plugins: ["@typescript-eslint", "import"], rules: { "quotes": ["error", "double"], "import/no-unresolved": 0, "indent": ["error", 2], "valid-jsdoc": "off", "require-jsdoc": "off", "no-html-link-for-pages": ["error", { pagesDir: "" }], }, };
/src/administrator.ts import * as functions from "firebase-functions"; import * as admin from "firebase-admin"; admin.initializeApp(); const COLLECTION_NAME = "administrators"; export const getAdministrators = functions.https.onRequest( async (req: any, res: any) => { let decodedIdToken; try { decodedIdToken = await admin .auth() .verifySessionCookie(req.cookies.session || ""); } catch (error) { return res.status(401).send("UNAUTHORIZED REQUEST!"); } if (req.method === "GET") { const {email} = req.query; // リストの表示 const adminSnapshot = await admin .firestore() .collection(COLLECTION_NAME) .where("email", "==", email) .get(); if (adminSnapshot.empty) { // 該当する管理者がいなければエラーを返す res.status(404).json({message: "Administrator not found"}); return; } const adminData = adminSnapshot.docs.map((doc) => ({ id: doc.id, ...doc.data(), })); res.status(200).json(adminData); } } );
/src/index.ts import * as functions from "firebase-functions"; import * as admin from "firebase-admin"; import {getAdministrators} from "./administrator"; import {getUsers} from "./user"; import {getEmails} from "./email"; import {getGroups} from "./group"; import {getSessions} from "./session"; admin.initializeApp(); // administrator を使用するエンドポイント export const someOtherEndpoint = functions.https.onRequest( async (req: any, res: any) => { // administrator 関数を利用 getAdministrators(req, res); getUsers(req, res); getEmails(req, res); getGroups(req, res); getSessions(req, res); } );

試したこと

.eslintrc.js の配置を funtions ディレクトリ直下に移動する。

補足情報(FW/ツールのバージョンなど)

Next.js 13

コメントを投稿

0 コメント