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

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

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

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Firebase

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

4395閲覧

firebaseをimportできず、Module not found: Can't resolve 'firebase'エラーが発生する

Eston

総合スコア67

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Firebase

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

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/10/14 08:45

編集2021/10/14 09:32

いつもお世話になっております。

現在Reactを使用してWebアプリを作成しています。

firebaseのimportで躓いております。

少々戸惑っているのですが、別のファイル(firebase.js)ではimportしてもエラーは出ないのに、該当の箇所(Preview.js)のみエラーが発生します。
追記
現在確認したところ、firebase.jsでも同様のエラーが発生し、yarn start時には真っ白になります

firebaseのバージョンは9.1.2です

ご助力いただけると幸いです。

試したこと
1)firebaseのバージョンの違い(v8とV9)かと考えcompatを利用=>変化なし
2)firebaseの再インストール(yarn, npm 両方)=>変化なし
3)firebase キャッシュクリア=>変化なし

該当の箇所↓

import firebase from "firebase";

エラー↓

Module not found: Can't resolve 'firebase' in '/Users/***/Dropbox/Mac/Desktop/snapy/src'

コード全体(Preview.js)↓

Preview.js

1import React, { useEffect } from 'react'; 2import { useSelector } from 'react-redux'; 3import { useHistory } from 'react-router'; 4import { resetCameraImage, selectCameraImage } from './features/cameraSlice'; 5import "./Preview.css"; 6import CloseIcon from '@mui/icons-material/Close'; 7import { useDispatch } from "react-redux"; 8import TextFieldsIcon from '@mui/icons-material/TextFields'; 9import CreateIcon from '@mui/icons-material/Create'; 10import NoteIcon from '@mui/icons-material/Note'; 11import MusicNoteIcon from '@mui/icons-material/MusicNote'; 12import AttachFileIcon from '@mui/icons-material/AttachFile'; 13import CropIcon from '@mui/icons-material/Crop'; 14import TimerIcon from '@mui/icons-material/Timer'; 15import SendIcon from '@mui/icons-material/Send'; 16import { v4 as uuid } from "uuid"; 17import { db, storage } from './firebase'; 18import firebase from "firebase"; 19 20function Preview() { 21 const cameraImage = useSelector(selectCameraImage); 22 const history = useHistory(); 23 24 const dispatch = useDispatch(); 25 26 useEffect(() => { 27 if (!cameraImage) { 28 history.replace('/') 29 } 30 }, [cameraImage, history]); 31 32 const closePreview = () => { 33 dispatch(resetCameraImage()); 34 }; 35 36 const sendPost = () => { 37 const id = uuid(); 38 const uploadTask = storage 39 // eslint-disable-next-line no-template-curly-in-string 40 .ref('posts/${id}') 41 .putString(cameraImage, "data_url"); 42 43 uploadTask.on('state_change', 44 null, 45 (error) => { 46 console.log(error); 47 }, 48 () => { 49 //Complete func 50 storage 51 .ref('posts') 52 .child(id) 53 .gedDownloadURL() 54 .then((url) => { 55 db.collection('posts').add({ 56 imageUrl: url, 57 username: "TEST", 58 read: false, 59 //profile picture 60 timstamp: firebase.firestore.FieldValue.serverTimestamp(), 61 }); 62 history.replace("/chats"); 63 }); 64 } 65 ); 66 }; 67 68 return ( 69 <div className="preview"> 70 <CloseIcon onClick={closePreview} className='preview__close' /> 71 <div className="preview__toolbarRight"> 72 <TextFieldsIcon /> 73 <CreateIcon /> 74 <NoteIcon /> 75 <MusicNoteIcon /> 76 <AttachFileIcon /> 77 <CropIcon /> 78 <TimerIcon /> 79 </div> 80 <img src={cameraImage} alt="" /> 81 <div onClick={sendPost} className="preview__footer"> 82 <h2>Send Now</h2> 83 <SendIcon fontSize="small" className="preview__sendIcon" /> 84 </div> 85 </div> 86 ); 87} 88 89export default Preview; 90

エラーの出ない別のファイル(firebase.js)↓

firebase.js

1import firebase from 'firebase'; 2 3const firebaseConfig = { 4 apiKey: "***", 5 authDomain: "***.firebaseapp.com", 6 projectId: "***", 7 storageBucket: "***", 8 messagingSenderId: "***", 9 appId: "1:***:web:***" 10}; 11 12const firebaseApp = firebase.initializeApp(firebaseConfig); 13const db = firebaseApp.firestore(); 14const auth = firebase.auth(); 15const storage = firebase.storage(); 16const provider = new firebase.auth.GoogleAuthProvider(); 17 18export { db, auth, storage, provider }; 19

package.json↓

{ "name": "snapy", "version": "0.1.0", "private": true, "dependencies": { "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", "@mui/icons-material": "^5.0.3", "@mui/material": "^5.0.3", "@reduxjs/toolkit": "^1.5.1", "@testing-library/jest-dom": "^4.2.4", "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", "firebase": "^9.1.2", "react": "^17.0.2", "react-dom": "^17.0.2", "react-redux": "^7.2.3", "react-router-dom": "^5.3.0", "react-scripts": "4.0.3", "react-webcam": "^6.0.0", "uuid": "^8.3.2" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] } }

node_modules

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

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

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

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

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

guest

回答1

0

自己解決

Root

1npm uninstall -g firebase-tools

-g でグローバルにもインストールしていたのが原因らしいです。
一度npm uninstall -g firebase-toolsでfirebaseをアンインストールします。

イメージとしてはグローバルと特定のファイルで呼び出すfirebaseが2つあると混乱した結果だと思います。

投稿2021/10/14 11:04

Eston

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問