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

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

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

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

Firebase

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

Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

5163閲覧

FirebaseのStripeのサンプル[firestripe]にてrequire(...) is not a functionがどうしても発生する

george6493

総合スコア25

npm

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

Firebase

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

Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2020/03/19 18:16

編集2020/03/20 11:18

#行ったこと
Firebaseのこちらの解説に従って、
https://firebase.google.com/docs/use-cases/payments?hl=ja
こちらのGithubとそっくりそのまま同じ構成のフォルダ「Test」を作り、
https://github.com/firebase/functions-samples/tree/master/stripe
サンプルのテストをしているのですが、
それまでの不具合は全く見当たらないのに最後の「firebase deploy」の段で必ず以下のエラーが発生します。

Error: Error occurred while parsing your function triggers.

TypeError: require(...) is not a function

deploy中のログは

✔ functions: Finished running predeploy script. i database: checking rules syntax... ✔ database: rules syntax for database billing-test is valid i functions: ensuring necessary APIs are enabled... ✔ functions: all necessary APIs are enabled i functions: preparing functions directory for uploading...

となっております。
どうやら、先述のGitHubのindex.jsの17-21行目から発生しているようなので、

  • 改めてFunctionフォルダ内でrequestをnpm install --save requestしたり

  • Firebase公式ドキュメントではなくGithubのReadmeの手順に従ったり(つまりもちろん Firebaseアカウントのアップグレードを済ませたり)

とあらゆる手を尽くしてみましたが一向に解消の気配がありません。

nodeを触るのは初めてなのでPackage.jsonの扱いも今ひとつなのかもしれませんが、Githubのコピペを使っているだけなのでそこに不具合があるとも思えず…
どなたかお力貸していただけませんでしょうか。

(追記)
どうやらGit Hub上のソースコードに問題があったようです。
・google-cloud/loggingのバージョンを大幅に下げる
・google/loggingのrequireを「const {Logging} = require('@google-cloud/logging');」という風に書く
として一旦Deploy時のrequireの問題は解決しましたが、今度は以下のような不具合が発生します。firebaseコンソールで設定したAuthenticationも機能せず、アクセス後すぐこの画面、かつ SingOutボタンも機能していないのでやはりnodeのGCPとの連携に問題がありそうです。
エラー画面
もうしばらくお力をお貸し願えませんでしょうか?うまくいけばgithubの方にも投げられるかもしれません。

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

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

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

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

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

hoshi-takanori

2020/03/19 19:54

ローカル環境で動かしてみましたか?
george6493

2020/03/20 04:59

ローカルで動かしたところ、package.jsonのengineで要求している8系ではなく13系を使っているよ、というWarningが出ましたのでnode8系をインストールしました。その後再びドキュメントの手順を追ってみて、もう一度firebase serveとすると当該 Warningは消えましたが、やはりrequire(...) is not a function と言われてしまいます。
guest

回答1

0

ベストアンサー

問題は index.js の次の行のようですね。

js

1const logging = require('@google-cloud/logging')();

最近の修正 で、このサンプルが使用する @google-cloud/logging のバージョンが 0.7.1 から 7.2.3 に大幅に上がって、使い方もだいぶ変わったためにエラーになっているようです。

とりあえず、以下のコマンドで @google-cloud/logging のバージョンを下げたら動くのではないかと思います。(古いのを使って大丈夫かという懸念はありますが…。)

npm install @google-cloud/logging@0.7.1

投稿2020/03/20 06:25

編集2020/03/20 06:27
hoshi-takanori

総合スコア7901

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

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

george6493

2020/03/20 08:46

ありがとうございます。とりあえずDeployは成功したのですが、Functionsのログを見ると (node:2) DeprecationWarning: grpc.load: Use the @grpc/proto-loader module with grpc.loadPackageDefinition instead というエラーが出ており、同じ原因かどうかは分かりませんがGoogleアカウントによる Authenticationも機能していないようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問