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

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

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

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

Stripe

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

Q&A

2回答

9484閲覧

Cloud Functionsのデプロイでエラーが出ます

Khy

総合スコア118

Firebase

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

Stripe

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

0グッド

0クリップ

投稿2019/06/16 05:12

決済にStripeを使おうと思っているのですが、Cloud Functionsをデプロイしようとすると以下のエラーが出ます。

Did you list all required modules in the package.json dependencies? Detailed stack trace: Error: Cannot find module 'stripe'

index.jsとpackage.jsonは以下のようになっております。
原因がわかる方がおられましたらお教え頂きたいです。
よろしくお願い致します。

const functions = require('firebase-functions'); const admin = require('firebase-admin'); const CORS = require('cors'); const Stripe = require('stripe'); const charge = (request, response) => { const body = JSON.parse(request.body); const token = body.token.id; const email = body.token.email; const amount = body.charge.amount; const currency = body.charge.currency; const stripe = Stripe(functions.config().stripe.token); stripe.charges .create({ amount, currency, description: "", source: token, receipt_email: email }) .then(charge => { send(response, 200, { message: "Success", charge }); }) .catch(error => { console.error(error); send(response, 500, { error: error.message }); }); }; function send(response, statusCode, body) { response.send({ statusCode, headers: { "Access-Control-Allow-Origin": "*" }, body: JSON.stringify(body) }); } exports.charge = functions.region('asia-northeast1').https.onRequest((request, response) => { const CORSRequestHandler = CORS({ origin: true }); CORSRequestHandler(request, response, () => { if (request.method !== "POST") { send(response, 405, { error: "Invalid Request" }); } try { charge(request, response); } catch (e) { console.log(e); send(response, 500, { error: `The server received an unexpected error. Please try again and contact the site admin if the error persists.` }); } }); });
{ "name": "APP_NAME", "version": "0.1.0", "private": true, "main": "index.js", "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "@google-cloud/storage": "^2.5.0", "axios": "^0.19.0", "babel-polyfill": "^6.26.0", "cors": "^2.8.5", "css-scroll-snap-polyfill": "^0.1.2", "date-fns": "^1.30.1", "firebase": "^5.9.0", "firebase-admin": "^8.0.0", "firebase-functions": "^3.0.1", "http2": "^3.3.7", "ismobilejs": "^0.5.1", "jquery": "^3.4.0", "register-service-worker": "^1.6.2", "rx-js": "0.0.0", "stripe": "^7.1.0", "vue": "^2.6.6", "vue-router": "^3.0.1", "vue-rx": "^6.1.0", "vue-slick": "^1.1.15", "vue-smoothscroll": "^0.2.0", "vue-stripe-checkout": "^1.2.6", "vuejs-clipper": "^0.2.10", "vuetify": "^1.5.5", "vuex": "^3.0.1" }, "devDependencies": { "@vue/cli-plugin-babel": "^3.5.0", "@vue/cli-plugin-eslint": "^3.5.0", "@vue/cli-plugin-pwa": "^3.5.0", "@vue/cli-service": "^3.7.0", "babel-eslint": "^10.0.1", "eslint": "^5.16.0", "eslint-plugin-vue": "^5.0.0", "node-sass": "^4.12.0", "sass-loader": "^7.1.0", "stylus": "^0.54.5", "stylus-loader": "^3.0.1", "vue-cli-plugin-vuetify": "^0.5.0", "vue-template-compiler": "^2.5.21", "vuetify-loader": "^1.0.5" } }

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

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

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

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

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

guest

回答2

0

package.jsonは以下のようになっております。

それはFunctionsではなくVueアプリで使用しているpackage.jsonですよね?

Yesの前提ですが、基本的な手順でFunctionsをセットアップしているならindex.jsがあるディレクトリ(functions)に移動して、そこで当該パッケージをインストール(npm install stripe --save)する必要があります。

上記がもしNoならFunctionsに不要なパッケージ(vue, axios, jquery...)が多すぎるので、最初からセットアップ(firebase init functions)されることをおすすめします。

投稿2019/06/16 05:42

xenbeat

総合スコア4258

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

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

0

他の方が仰っているように、Cloud Functions では使用しない Vue.jsのパッケージが package.json に入っているのはおかしいのではないかと思うので必要最低限にしたほうが良いかと思います。

ただ、上記のエラーの原因はインポート方法が間違っているのではないかと思います。
一度 npm の stripe 公式を見てみると良いかと思います。

https://www.npmjs.com/package/stripe

投稿2019/06/16 11:51

teikoku-penguin

総合スコア314

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問