簡體   English   中英

如何訪問使用 gatsby-plugin-nodejs 提供的 Gatsby 構建文件中的環境變量

[英]How to access environment variables inside Gatsby build files that are served using gatsby-plugin-nodejs

我有一個 GatsbyJS 應用程序,由 NodeJS express 服務器使用gatsby-plugin-nodejs 我在 Cloud Foundry 中將環境變量設置為 GATSBY_MY_ENVIRONMENT="Production"。

我的 NodeJS 正在使用 express 並且具有以下代碼。

const express = require('express');
const app = express();
const gatsby = require("gatsby-plugin-nodejs")
const cfenv = require('cfenv');
const appEnv = cfenv.getAppEnv();
require('dotenv').config()
...
gatsby.prepare({ app }, () => {})
app.listen(appEnv.port, '0.0.0.0', function () {
    console.log("server starting on " + appEnv.url);
    console.log("My Gatsby env variable " + process.env.GATSBY_MY_ENVIRONMENT);
});

我可以控制台記錄我的變量值 - 在 NodeJs express 中使用console.log(process.env.GATSBY_MY_ENVIRONMENT)進行生產,但我無法在我的 Gatsby 組件中獲取此值。

我的 gatsby-config.js 添加了以下內容

require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
})

如何在構建時訪問我的 GatsbyJS 組件中的這個變量? 我試圖訪問此變量的組件可能看起來像

import React from 'react';
import Header from 'gatsby-theme-carbon/src/components/Header';

export default class MyComponent extends React.Component {
  render() {
    return (
      <div>
        My environment is {process.env.GATSBY_MY_ENVIRONMENT}
      </div>
    )
  }
}

您是否嘗試過使用 webpack 的DefinePlugin使您的環境變量在您的應用程序中可用?

JavaScript 中訪問環境變量的詳細信息

這意味着添加一個gatsby-node.js - 或者如果您已經使用它,則對其進行編輯( 詳細信息):

exports.onCreateWebpackConfig = ({
  plugins,
  actions,
}) => {
  actions.setWebpackConfig({
    plugins: [
      plugins.define({
        MY_FANCY_VARIABLE: 'the-value',
      }),
    ],
  })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM