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

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

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

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

JavaScript

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

TypeScript

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

解決済

1回答

4993閲覧

Firebase Functions で、trim()やmatch()を使うと「undefined」のエラーとなる

sont

総合スコア35

Firebase

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

JavaScript

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

TypeScript

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/05/27 04:26

編集2019/05/27 04:27

Firebase FunctionsとExpressを使って、簡単なWebAPIを作成しています。
以下のようなソースコードをTypeScriptで作成し、ビルドをしてJavaScriptへの変換は問題なくできています。

TypeScript

1import * as functions from 'firebase-functions'; 2import * as express from 'express'; 3 4const app = express() 5 6app.post('/', (req, res) => { 7 var resText: string = "NotEmpty" 8 const text: string = req.body.text 9 10 if (isEmpty(text)) { 11 resText = "Empty" 12 } 13 console.log("text: ", text) 14 console.log("resText: ", resText) 15 res.send("Echo " + resText) 16}) 17 18exports.api = functions.https.onRequest(app) 19 20 21const isEmpty = (str: string): boolean => { 22 console.log("str: ", str, "+++") 23 const trimedStr = str.trim() 24 const result = (trimedStr === null || trimedStr === "") 25 console.log("result: ", result) 26 return result 27}

しかし、これをローカルサーバーにデプロイして、POST APIを呼び出したところ、以下のようなエラーとなりました。

> TypeError: Cannot read property 'trim' of undefined > at isEmpty (/Users/kenny/Test/firebase_functions/functions/lib/index.js:22:27) > at app.post (/Users/kenny/Test/firebase_functions/functions/lib/index.js:9:9) > at Layer.handle [as handle_request] (/Users/kenny/Test/firebase_functions/functions/node_modules/expr ess/lib/router/layer.js:95:5) > at next (/Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/router/route.js:137: 13) > at Route.dispatch (/Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/router/rou te.js:112:3) > at Layer.handle [as handle_request] (/Users/kenny/Test/firebase_functions/functions/node_modules/expr ess/lib/router/layer.js:95:5) > at /Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/router/index.js:281:22 > at Function.process_params (/Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/r outer/index.js:335:12) > at next (/Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/router/index.js:275: 10) > at expressInit (/Users/kenny/Test/firebase_functions/functions/node_modules/express/lib/middleware/in it.js:40:5)

なぜか、Stringクラスのメソッドであるはずの、trim()のところでエラーとなってしまいます。
同様に、match()も利用することができませんでした。
アドバイスを頂けるでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

Cannot read property 'trim' of undefinedということは、trimを呼んだstrundefinedになっているということではないかと思います。

投稿2019/05/27 04:56

maisumakun

総合スコア145121

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

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

sont

2019/05/31 05:38

ありがとうございます! 確かにundefinedになっていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問