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

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

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

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

Q&A

解決済

1回答

2630閲覧

Typescript react firebase 環境でのエラー

junsuke

総合スコア1

Firebase

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

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

0グッド

0クリップ

投稿2021/01/20 05:04

編集2021/01/21 09:03

前提・実現したいこと

Typescript react firebase でチャットボット を作成中
firebase functionsでチャットの構造体(json)をfirestoreにデプロイしたいです。
ソースコード

import * as functions from 'firebase-functions'; ←ここでエラー発生 外部からインポートできませんみたいなことを言われています。 import * as admin from "firebase-admin"; admin.initializeApp(); const db = admin.firestore(); const sendResponse = (response: functions.Response, statusCode: number, body: any) => { response.send({ statusCode, body: JSON.stringify(body) }); }; export const addDataset = functions.https.onRequest(async (req: any, res: any) => { if (req.method !== 'POST') { sendResponse(res, 405, {error: "Invalid Request"}) } else { const dataset = req.body; for (const key of Object.keys(dataset)) { const data = dataset[key]; await db.collection('questions').doc(key).set(data) } sendResponse(res, 200, {message: 'Successfully added dataset! WooHoo!'}); } });

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

デプロイコマンドで途中までうまく行きますが、functions preparing functions directory for uploadingのとこでError発生します。
¥firebase deploy 以下エラーコード

i deploying firestore, functions, hosting i firestore: reading indexes from firestore.indexes.json... i cloud.firestore: checking firestore.rules for compilation errors... ✔ cloud.firestore: rules file firestore.rules compiled successfully i functions: ensuring required API cloudfunctions.googleapis.com is enabled... i functions: ensuring required API cloudbuild.googleapis.com is enabled... ✔ functions: required API cloudbuild.googleapis.com is enabled ✔ functions: required API cloudfunctions.googleapis.com is enabled ✔ firestore: deployed indexes in firestore.indexes.json successfully i firestore: latest version of firestore.rules already up to date, skipping upload... i functions: preparing functions directory for uploading... Error: Error occurred while parsing your function triggers. /Users/junsuke/Applications/VSCdev/ts-chatbot-lesson/functions/src/index.ts:11 import * as functions from 'firebase-functions'; ^^^^^^ SyntaxError: Cannot use import statement outside a module at wrapSafe (internal/modules/cjs/loader.js:979:16) at Module._compile (internal/modules/cjs/loader.js:1027:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) at Function.Module._load (internal/modules/cjs/loader.js:769:14) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at /usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:19:15 at Object.<anonymous> (/usr/local/lib/node_modules/firebase-tools/lib/triggerParser.js:57:3) at Module._compile (internal/modules/cjs/loader.js:1063:30)

試したこと

スタックオーバーフローに載っているものは全て試しました。

■追記 package.json tsconfig.jsonを追記しました

package.json

{ "name": "functions", "type":"module", "scripts": { "lint": "tslint --project tsconfig.json", "build": "tsc", "serve": "npm run build && firebase emulators:start --only functions", "shell": "npm run build && firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "12" }, "main": "src/index.ts", "dependencies": { "firebase-admin": "^9.2.0", "firebase-functions": "^3.11.0" }, "devDependencies": { "typescript": "^3.8.0", "firebase-functions-test": "^0.2.0" }, "private": true }

tsconfig.json

{ "compilerOptions": { "module": "commonjs", "noImplicitReturns": true, "noUnusedLocals": true, "outDir": "lib", "sourceMap": true, "strict": true, "target": "es2017" }, "compileOnSave": true, "include": [ "src" ] }

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

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

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

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

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

uraway_

2021/01/20 07:50

package.json と tsconfig.json の内容を追記してもらえますか?TypeScriptコンパイラが動作していないように見えます
junsuke

2021/01/21 07:04

かしこまりました。追記しておきます!
guest

回答1

0

ベストアンサー

デプロイするファイルは、TypeScriptによってトランスパイルされたものである必要があります。次のように、package.jsonmainに、トランスパイルされたファイルを指定することで解消されるかと思います。

diff

1- "main": "src/index.ts", 2+ "main": "lib/index.js",

https://firebase.google.com/docs/functions/typescript

もし、デプロイコマンドを入力しても、TypeScriptコンパイラが実行されない場合はfilrebase.jsonpredeployフックが次のようになっているか確認してください

json

1 { 2 "functions": { 3 "predeploy": "npm --prefix functions run build", 4 } 5 }

投稿2021/01/21 18:52

uraway_

総合スコア116

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問