コードに不要なAPIキーの環境変数を設定しようとしています。私のソースJavaScriptは次のようになります。
.get(`http://api-url-and-parameters&api-key=${process.env.API_KEY}`)
私はwebpackとパッケージdotenv-webpack https://www.npmjs.com/package/dotenv-webpack を使用してgitignored .envファイルにAPI_KEYを設定し、ローカルですべて正常に実行しています。 Netlifyを介して展開するときにもこの変数を設定できるようにしたいので、「ビルド環境変数」にGUIを介して追加し、ビルドコマンドで直接設定しようとしましたが、成功しませんでした。
問題は何でしょうか?
警告:これが秘密鍵の場合 クライアントに返されるバンドルでこの環境変数の値を公開する必要はありません 。ビルド中にコンテンツを作成するために使用するビルドスクリプトでのみ使用する必要があります。
dotenv-webpack
は、バンドルのWebpackビルド中に変数にロードする.env
ファイルがあることを期待しています。リポジトリがNetlifyによってチェックアウトされるとき、.env
は存在しません。これは、正当な理由により、.gitignore
にあるためです。
API_KEYをNetlify build environment variables
に保存し、ビルドコマンドを実行する前にスクリプトを使用して.env
をビルドします。
scripts/create-env.js
const fs = require('fs')
fs.writeFileSync('./.env', `API_KEY=${process.env.API_KEY}\n`)
ビルドの一部としてスクリプトを実行する
node ./scripts/create-env.js && <your_existing_webpack_build_command>
0
以外のコードでエラーになるようにしてください。スクリプトが失敗した場合、デプロイは失敗します。次のようにして、Dotenv-webpackを設定して、システム環境変数と.envファイルで宣言した変数をロードできます。
plugins: [
new Dotenv({
systemvars: true
})
]
つまり、webpack dotenvプラグインのsystemvars属性をtrueに設定します。
同じ名前のシステム環境変数は、.envファイルで定義されたものを上書きすることに注意してください。
ソース: https://www.npmjs.com/package/dotenv-webpack#properties