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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

Q&A

解決済

1回答

1909閲覧

Vue.jsでOGPが上手くいきません。(Cloud Functions)

Khy

総合スコア118

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Firebase

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

0グッド

0クリップ

投稿2019/05/27 06:14

編集2019/05/27 06:23

Vue.jsとFirebaseでOGPの表示を行おうとしております。

Vue.js+firebaseでSSRなしにOGP対応する方法
Firebase + SPA で SSR なしに OGP 対応

上記サイトを参考にコードを描いてみたのですがfirebase deployをした時に以下のエラーが出ます。

i functions: preparing functions directory for uploading... Error: Error occurred while parsing your function triggers. /Users/a/Desktop/Projects/vue-app/functions/index.js:1 (function (exports, require, module, __filename, __dirname) { import * as functions from 'firebase-functions'; ^ SyntaxError: Unexpected token * at new Script (vm.js:79:7) at createScript (vm.js:251:10) at Object.runInThisContext (vm.js:303:10) at Module._compile (internal/modules/cjs/loader.js:657:28) at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) at Module.load (internal/modules/cjs/loader.js:599:32) at tryModuleLoad (internal/modules/cjs/loader.js:538:12) at Function.Module._load (internal/modules/cjs/loader.js:530:3) at Module.require (internal/modules/cjs/loader.js:637:17) at require (internal/modules/cjs/helpers.js:22:18)

Functionsフォルダ内のindex.jsに記載したコードは以下の通りです。
お力をお貸し頂けると助かります、よろしくお願い致します。

import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin'; admin.initializeApp(functions.config().firebase); const db = admin.firestore() function buildHtmlWithPost(id, obj) { return `<!DOCTYPE html><head> <title>${obj.title}</title> <meta property="og:title" content="${obj.title}"> <meta property="og:image" content="${obj.image}"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="${obj.title}"> <meta name="twitter:description" content="${obj.content}"> <meta name="twitter:image" content="${obj.image}"> <link rel="canonical" href="/project/${id}"> </head> <body> <script>window.location="/project?id=${id}";</script> </body> </html>` } exports.project = functions.https.onRequest(function(req, res) { //URLからidを抽出 const path = req.path.split('/') const projectId = path[path.length-1] //idをキーにfirestoreからデータを取得 db.collection('projects').doc(projectId).get() .then((doc) => { let obj = doc.data() //返却用のHTMLを取得 const htmlString = buildHtmlWithPost(projectId, obj) res.set('Cache-Control', 'public, max-age=300, s-maxage=600') res.status(200).end(htmlString) }).catch((err) => { res.status(500).end(err) }) })

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

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

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

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

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

guest

回答1

0

ベストアンサー

次のように修正してみてください

import * as functions from 'firebase-functions'; import * as admin from 'firebase-admin'; ↓ const functions = require('firebase-functions'); const admin = require('firebase-admin');

おそらくですが、参考にされている記事はfunctions初期化の際にTypescriptを選択しています。

投稿2019/05/27 06:55

xenbeat

総合スコア4258

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

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

Khy

2019/05/27 12:52

ご回答ありがとうございます! 無事解決いたしました!今後Typescriptも使えるよう頑張ります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問