##実現したい事
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-functions
とfirebase-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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。