node.js - 如何访问使用 gatsby-plugin-nodejs 提供的 Gatsby 构建文件中的环境变量
问题描述
我有一个 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>
)
}
}
解决方案
您是否尝试过使用 webpackDefinePlugin
让您的环境变量在您的应用程序中可用?
在 JavaScript中访问环境变量的详细信息
这意味着添加gatsby-node.js
- 或在您已经使用它的情况下对其进行编辑(详细信息):
exports.onCreateWebpackConfig = ({
plugins,
actions,
}) => {
actions.setWebpackConfig({
plugins: [
plugins.define({
MY_FANCY_VARIABLE: 'the-value',
}),
],
})
}
推荐阅读
- html - 边缘 - 无法水平和垂直居中文本
- c# - 任务执行
- git - 如何压缩包含合并提交的提交
- python - Python:如何从以特定模式开头的字符串数组中过滤出元素
- java - 如何在 jenkins 中引用成功/失败测试(松弛集成)
- node.js - 节点js和postgresql中的选择查询问题
- javascript - 在 cypress 中运行 BDD 功能文件。zsh:找不到命令:赛普拉斯
- laravel - 带有 Laravel 命令的 Crontab 不起作用
- xamarin.android - 如果应用程序在后台,则显示对话框
- android - 我是 firebase 实时数据库的新手,我需要一些代码帮助