Javascript Netflify CMS手动初始化(Gridsome)中的环境变量

Javascript Netflify CMS手动初始化(Gridsome)中的环境变量,javascript,environment-variables,netlify-cms,gridsome,jamstack,Javascript,Environment Variables,Netlify Cms,Gridsome,Jamstack,我正在用Gridsome和Netlify CMS构建一个网站,由Netlify托管。 Netlify CMS文件位于/static/admin中。 我正在index.js中手动初始化Netlify CMS,以根据环境变量更改其推送的分支 const branch = window.GRIDSOME_CMS_BRANCH || "develop" window.CMS_MANUAL_INIT = true const { CMS, initCMS: init } = window init({

我正在用Gridsome和Netlify CMS构建一个网站,由Netlify托管。 Netlify CMS文件位于
/static/admin
中。 我正在
index.js
中手动初始化Netlify CMS,以根据环境变量更改其推送的分支

const branch = window.GRIDSOME_CMS_BRANCH || "develop"
window.CMS_MANUAL_INIT = true
const { CMS, initCMS: init } = window

init({
    config: {
        backend: {
            branch: `${branch}`
        },
    },
})
我在
netlify.toml
文件中设置这些环境变量,如下所示:

[context.release.environment]
    GRIDSOME_CMS_BRANCH = "release"

[context.stage.environment]
    GRIDSOME_CMS_BRANCH = "stage"

[context.develop.environment]
    GRIDSOME_CMS_BRANCH = "develop"
但是,当我构建并导航到
mysite.com/admin
以访问CMS时,分支总是
develope
,环境变量是
undefined
。我尝试了很多不同的方法,我想在这种情况下我对环境变量有一些基本的误解。如果有人能帮助我,向我解释这件事,或者提供一个有效的解决方案,我将是一个快乐的人


提前谢谢,干杯

我有一个类似的问题,我使用本文中描述的技术解决了这个问题

如果您需要访问客户端的环境变量(Netlify CMS就是在这里初始化的),您可以使用webpack在构建时为您存储该值

您可以在Netlify CMS的网页包配置中执行以下操作:

const webpack = require('webpack');
const getRepoInfo = require('git-repo-info')

const { branch } = getRepoInfo()

module.exports = () => {
  return {
    plugins: [
      new webpack.DefinePlugin({
        'process.env.GRIDSOME_CMS_BRANCH': JSON.stringify(branch)
      })
    ]
  };
上述代码在构建时在服务器上执行,但使变量
process.env.GRIDSOME\u CMS\u分支在运行时可供客户端使用