質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

Q&A

解決済

1回答

4140閲覧

【Firebase】Error: Cannot find the firebase namespace; を解消したい

Bo_Takuma

総合スコア5

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Firebase Authentication

Firebase Authenticationは、Firebaseを利用したユーザーの認証機能です。バックエンドサービス、SDK、アプリでのユーザー認証に使用できるUIライブラリが用意されています。

Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

0グッド

0クリップ

投稿2020/06/05 06:40

編集2020/06/05 06:45

##実現したい事

firebase deployをした後に、タイトルのエラーを解消したい。

→firebaseのauth機能を組み込み中、以下のエラーにはまりました。。( ; ; )

##エラー

npm install --save firebaseを実行後、

firebase deployを実行すると、以下のerrorが発生。

terminal

1Error: Error occurred while parsing your function triggers. 2 3Error: Cannot find the firebase namespace; be sure to include firebase-app.js before this library. 4 at /Users/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:352 5 at /Users/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:455 6 at Object.<anonymous> (/Users/Desktop/socialapp/firebase_function/functions/node_modules/@firebase/auth/dist/auth.js:430:461) 7 at Module._compile (internal/modules/cjs/loader.js:701:30) 8 at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10) 9 at Module.load (internal/modules/cjs/loader.js:600:32) 10 at tryModuleLoad (internal/modules/cjs/loader.js:539:12) 11 at Function.Module._load (internal/modules/cjs/loader.js:531:3) 12 at Module.require (internal/modules/cjs/loader.js:637:17) 13 at require (internal/modules/cjs/helpers.js:22:18) 14username@mbp-2 functions %

firebase namespaceが見つからないよ、と言われたので、
require付近で間違えたのかな、と思いコードを確認。

##コードなど

index.js

js

1const functions = require('firebase-functions'); 2const admin = require('firebase-admin'); 3const app = require('express')(); 4 5admin.initializeApp(); 6 7const firebaseConfig = { 8 apiKey: "******************", 9 authDomain: "******************", 10 databaseURL: "******************", 11 projectId: "******************", 12 storageBucket: "******************", 13 messagingSenderId: "******************", 14 appId: "******************", 15 measurementId: "******************" 16 }; 17 18 19 20// ↓↓ require firebase ↓↓ 21 22const firebase = require('firebase'); 23firebase.initializeApp(firebaseConfig); 24 25// ↑↑ require firebase終わり ↑↑ 26 27 28app.get('/screams',(req,res) => { 29 admin 30 .firestore() 31 .collection('screams') 32 .orderBy('createdAt','descs') 33 .get() 34 .then((data) => { 35 let screams = []; 36 data.forEach((doc) => { 37 screams.push({ 38 screamId: doc.id, 39 body: doc.data().body, 40 userHandle: doc.data().userHandle, 41 createdAt: doc.data().createdAt, 42 }); 43 }); 44 return res.json(screams); 45 }) 46 .catch(err => console.error(err)); 47}) 48 49 50app.post('/scream',(req,res) => { 51 const newScream = { 52 body: req.body.body, 53 userHandle: req.body.userHandle, 54 createdAt: new Date().toISOString() 55 }; 56 admin.firestore() 57 .collection('screams') 58 .add(newScream) 59 .then(doc => { 60 res.json({ message: `document ${doc.id} created successfully` }); 61 }) 62 .catch(err => { 63 res.status(500).json({ error: ' somethihg went wrong '}); 64 console.error(err); 65 }); 66}); 67 68// Signup route 69 70app.post('/signup', (req,res)=> { 71 const newUser = { 72 email: req.body.email, 73 password: req.body.password, 74 confirmPassword: req.body.confirmPassword, 75 handle: req.body.handle, 76 }; 77 78 //Todo balidate data 79 firebase 80 .auth() 81 .createUserWithEmailAndPassword(newUser.email,newUser.password) 82 .then((data) => { 83 return res.status(201).json({ message: `user ${data.user.uid} signed up successgfully` }); 84 }) 85 .catch((err) => { 86 console.error(err); 87 return res.status(500).json({ error: err.code }); 88 }); 89}); 90 91exports.api = functions.https.onRequest(app); 92

package.json

json

1{ 2 "name": "functions", 3 "description": "Cloud Functions for Firebase", 4 "scripts": { 5 "serve": "firebase serve --only functions", 6 "shell": "firebase functions:shell", 7 "start": "npm run shell", 8 "deploy": "firebase deploy --only functions", 9 "logs": "firebase functions:log" 10 }, 11 "dependencies": { 12 "express": "^4.17.1", 13 "firebase": "^7.15.0", 14 "firebase-admin": "^7.0.0", 15 "firebase-functions": "^3.6.2" 16 }, 17 "engines": { 18 "node": "8" 19 }, 20 "private": true 21} 22

ディレクトリ構造

. └── functions └── node_modules : ├── extend ├── fast-text-encoding ├── faye-websocket ├── finalhandler ├── firebase ├── firebase-admin ├── firebase-functions ├── form-data ├── forwarded :

##試した事
import * as firebase from 'firebase';をindex.jsの上部に書き換える。
→syntax errorでうまく読み込めず。

②個別に分解して以下のように実行

var firebase = require('firebase/app'); require('firebase/auth'); require('firebase/database');

Error:Cannot find the firebase namespace;が起きて、またもやうまく動きません。。

同じようにrequireしたfirebase-functionsfirebase-adminはうまく動きました。
const firebase = require('firebase')のみエラーでうまくrequireできません。( ; ; )
この問題を解消するにはどこを修正すればいいのでしょうか?

このエラーを解決したいので、詳しい方教えてください。

##開発環境
Node.js: v10.15.3
firebase : 7.15.0
firebase-admin: 7.0.0,
firebase-functions: 3.6.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

直接の原因が、firebaseとfirebase-admin,firebase-functionsの依存関係でした。
versionによっては依存関係がうまく成り立たないようです。

なので、以下を実行して問題を解決しました。

解決方法:firebaseを5.9.0にダウングレード

①npm insatall --save firebase@5.9.0を実行(依存関係の解消)
②require('firebase');を任意のjsに記述&save
③firebase deploy を実行

Deploy complete!

auth functionもworking!!。

参考ソース
https://github.com/firebase/firebase-tools/issues/609

投稿2020/06/06 12:03

Bo_Takuma

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問