Javascript Netflify CMS手动初始化(Gridsome)中的环境变量
我正在用Gridsome和Netlify CMS构建一个网站,由Netlify托管。 Netlify CMS文件位于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({
/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分支在运行时可供客户端使用