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

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

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

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

Q&A

2回答

3128閲覧

Netlifyでホスティングした環境変数が読めない(Vue.js,webpack,ButterCMS)

Hiroki_Otani

総合スコア10

Vue.js

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

0グッド

1クリップ

投稿2018/11/07 09:59

編集2018/11/07 10:13

実現したいこと

Vue.js(webpackテンプレート)・Netlify・ButterCMSでSPAのブログを作っています。
(Vue.jsの公式に載っている構成をNetlifyに乗せる形です)
環境変数に設定したButterCMSのAPI tokenが上手く取得できなくて困っています。

前提および背景

  • API tokenは元々config/dev.env.jsおよびconfig/prod.env.jsに記載していた
  • (この状態ならローカルでrunしたときは上記のファイルからAPI tokenを取得できている)
  • ただし、これらの情報はcredentialであるため、Github上にアップロードする時はYOUR API KEYに置き換えている
  • 補足:NetlifyはGithubのmasterを直接ホスティングするため、API tokenを含むファイルをpushしないとNetlifyでホスティングしたときに読めない

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

  • Netlifyでホスティングするに当たって、Build Environment variablesに環境変数を設定出来るため、ここにAPI tokenを設定してデプロイしたが、アプリケーションがNetlifyで設定した環境変数を読めていない
  • tokenのクエリストリングが&auth_token=YOUR+API+KEYになってしまっているため、APIを叩いてもunauthorizedで返ってくる

ソースコード

こちらのリポジトリにソースを置いています。以下必要と思われる分だけ抜粋します。

API呼び出しをしている部分:src/Index.vue

javascript

1<template> 2. 3. 4. 5</template> 6<script> 7import Butter from "buttercms"; 8var butter = Butter(process.env.VUE_APP_BUTTER_API_KEY); 9export default { 10 name: "index", 11 data: function() { 12 return { 13 posts: [] 14 }; 15 }, 16 created: function() { 17 this.fetchPosts(); 18 }, 19 methods: { 20 fetchPosts: function() { 21 var vm = this; 22 butter.post 23 .list({ page: 1, page_size: 10 }) 24 .then(function(res) { 25 vm.posts = res.data.data; 26 }) 27 .catch(function(err) { 28 console.log(err); 29 }); 30 } 31 } 32}; 33 34</script>

GitHubにあげているprod.env.js(GitHubに上げた時点でtokenは伏せている)

javascript

1'use strict' 2require('dotenv').config(); 3 4module.exports = { 5 NODE_ENV: '"production"', 6 VUE_APP_BUTTER_API_KEY: '"464a98d163b954e9ac9ee91798f56547b0e48eb4"' 7}

考えていること

  • どうすればNetlifyに設定した環境変数が読めるのか?

.

  • 「Netlifyに環境変数を設定した」と言っているが、Build Environment Variablesであるため、これはビルド時に使用するためだけのもので、アプリケーション内でAPIを叩くなどのときに使用するものではないのでは?
  • 仮にそうだとすると、NetlifyでホスティングするときにCredentialは隠せないのではないか?

.

  • ローカルでexport VUE_APP_BUTTER_API_KEY=ababababababab(仮の値です)を実行し、ローカルでnpm run devを実行しても読めない(読む方法がわからない)ので、そもそもマシン毎の環境変数にAPI tokenを設定することが間違っている?
  • こちらの場合でも上と同じで、ではどうやって安全にAPI tokenをGithub上に置いてホスティングすればよいのか?

補足情報(FW/ツールのバージョンなど)

Butter CMS API Reference

まとめ

以上となります。VueもwebpackもNetlifyも触り始めた段階で前提から違っている可能性もありますが、ご存知の方がいらっしゃれば教えていただけると幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

一年以上前の質問ですが、最近になって同じ事に悩んで解決方法がわかったので今更かもしれませんが回答を書いておきます。

「vue-cli3系を使ってvue.jsアプリケーションで環境変数を扱う」
https://tech.mof-mof.co.jp/blog/vue-cli3-env/

解決方法は上記を参照すればわかりますが、単純に環境変数名に"VUE_APP_"をつけるだけです。Netlifyでもこれで動作することを確認しました。

投稿2020/06/30 07:36

mabmab

総合スコア20

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

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

0

手元で試せてはいないのですが node.jsとwebpack以後で環境変数は分断されているので、
prod.env.jsを調整してみるといかがでしょうか?

const settings = { NODE_ENV: '"production"', VUE_APP_BUTTER_API_KEY: `"${process.env. VUE_APP_BUTTER_API_KEY}"` // 修正箇所 } console.log(settings) // デバッグ用 module.exports settings

投稿2018/11/27 16:54

wilf

総合スコア300

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問