如何在 netlify 中创建客户端环境变量
How to create Client-side environment variables in netlify
我使用 netlify 从 git 存储库部署一个 gatsby 应用程序,我使用 contentful 作为我的 CMS。为了使用内容交付 api,我在客户端定义了 accessToken 和 space id,现在它工作正常。但是accessToken是纯文本的,暴露accessToken是一个安全问题。我知道 netlify 可以创建环境变量,但变量似乎只适用于服务器端。我创建了一个名为 CONENTFUL_ACCESS_TOKEN 的变量,我可以在 gatsby-config.js 使用 process.env.CONENTFUL_ACCESS_TOKEN 访问它, gatesby-node.js 等等,但是在客户端无法访问,怎么办?
这是我的 client.js,它在客户端运行。
const client=contentful.createClient({
space:'your spaceid',
accessToken:'your access token',
})
如何更改为:
const 客户端=contentful.createClient({
space:'your space id',
accessToken:NETLIFY_ENVIROMENT_VARIABLE_NAME,
})
使用 Netlify,您需要在所有环境变量前加上 GATSBY_
前缀。如Gatsby documentation.
所示
In addition to these Project Environment Variables defined in .env
.*
files, you could also define OS Env Vars. OS Env Vars which are
prefixed with GATSBY_
will become available in browser JavaScript.
所以你 CONENTFUL_ACCESS_TOKEN
和其他变量将变成 GATSBY_CONENTFUL_ACCESS_TOKEN
(等等)。一旦它们在本地设置(保持凝聚力并避免口是心非),您必须在您的 Netlify 应用程序中更改它们(在 https://app.netlify.com/sites/YOURSTIE/settings/deploys#environment 下):
spaceId
.
同样的程序
要使用这个变量,你只需要把它们添加到你的gatsby-config.js
:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: process.env.GATSBY_CONTENTFUL_SPACEID,
accessToken: process.env.GATSBY_CONTENTFUL_ACCESS_TOKEN,
host: `preview.contentful.com`,
},
},
并且:
const client=contentful.createClient({
space:process.env.GATSBY_CONTENTFUL_SPACEID,
accessToken: process.env.GATSBY_CONTENTFUL_ACCESS_TOKEN,
})
参考:https://www.gatsbyjs.org/packages/gatsby-source-contentful/
我使用 netlify 从 git 存储库部署一个 gatsby 应用程序,我使用 contentful 作为我的 CMS。为了使用内容交付 api,我在客户端定义了 accessToken 和 space id,现在它工作正常。但是accessToken是纯文本的,暴露accessToken是一个安全问题。我知道 netlify 可以创建环境变量,但变量似乎只适用于服务器端。我创建了一个名为 CONENTFUL_ACCESS_TOKEN 的变量,我可以在 gatsby-config.js 使用 process.env.CONENTFUL_ACCESS_TOKEN 访问它, gatesby-node.js 等等,但是在客户端无法访问,怎么办? 这是我的 client.js,它在客户端运行。
const client=contentful.createClient({
space:'your spaceid',
accessToken:'your access token',
})
如何更改为: const 客户端=contentful.createClient({ space:'your space id', accessToken:NETLIFY_ENVIROMENT_VARIABLE_NAME, })
使用 Netlify,您需要在所有环境变量前加上 GATSBY_
前缀。如Gatsby documentation.
In addition to these Project Environment Variables defined in
.env
.* files, you could also define OS Env Vars. OS Env Vars which are prefixed withGATSBY_
will become available in browser JavaScript.
所以你 CONENTFUL_ACCESS_TOKEN
和其他变量将变成 GATSBY_CONENTFUL_ACCESS_TOKEN
(等等)。一旦它们在本地设置(保持凝聚力并避免口是心非),您必须在您的 Netlify 应用程序中更改它们(在 https://app.netlify.com/sites/YOURSTIE/settings/deploys#environment 下):
spaceId
.
要使用这个变量,你只需要把它们添加到你的gatsby-config.js
:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: process.env.GATSBY_CONTENTFUL_SPACEID,
accessToken: process.env.GATSBY_CONTENTFUL_ACCESS_TOKEN,
host: `preview.contentful.com`,
},
},
并且:
const client=contentful.createClient({
space:process.env.GATSBY_CONTENTFUL_SPACEID,
accessToken: process.env.GATSBY_CONTENTFUL_ACCESS_TOKEN,
})
参考:https://www.gatsbyjs.org/packages/gatsby-source-contentful/