如何在 netlify 上设置环境变量?
How can I set environment variables on netlify?
我有一个 netlify React 应用程序。它连接到我的 github。我正在使用 emailjs 接收来自任何访问我的应用程序的人的消息。
emailjs 处理三个 id 'SERVICE_ID'、'TEMPLATE_ID' 和 'USER_ID'。但我不想在我的组件 js 文件中公开使用它们。
驱动函数
function sendEmail(e) {
e.preventDefault(); //This is important, i'm not sure why, but the email won't send without it
emailjs.sendForm(SERVICE_ID, TEMPLATE_ID, e.target, USER_ID)
.then((result) => {
window.location.reload() //This is if you still want the page to reload (since e.preventDefault() cancelled that behavior)
}, (error) => {
console.log(error.text);
});
}
勾选Adding env variables to react app
您可以在您的根目录中创建一个 .env
并在其中添加您的密钥、api 端点...。
我认为您指的是环境变量,为了在本地进行测试,它会根据您用于创建应用程序的堆栈而有所不同,如果您使用 react create app,则可以在项目的根并填充值
REACT_APP_SERVICE_ID ="your_value"
REACT_APP_TEMPLATE_ID ="your_value"
REACT_APP_USER_ID ="your_value"
不要忘记从 git 中排除此文件,以避免在您的存储库中推送机密。为此,请将其添加到您的 .gitignore
.env
之后,您可以使用 process.env 调用代码中的变量,如下所示:
process.env.REACT_APP_SERVICE_ID
现在修改代码:
function sendEmail(e) {
// Your code
emailjs.sendForm(process.env.REACT_APP_SERVICE_ID, process.env.REACT_APP_TEMPLATE_ID, e.target, process.env.REACT_APP_USER_ID)
// your promise
}
要在 netlify 中工作,您必须在 netlify 项目中添加变量,请按照本节进行操作:https://docs.netlify.com/configure-builds/environment-variables/#declare-variables
如您所述,我添加了前缀 REACT_APP_,这是因为 react create app 这样做:
Note: You must create custom environment variables beginning with
REACT_APP_. Any other variables except NODE_ENV will be ignored to
avoid accidentally exposing a private key on the machine that could
have the same name. Changing any environment variables will require
you to restart the development server if it is running.
如果您使用的是 gatsby 或 nextjs,环境变量命名约定可能会发生变化,因此请注意这一点。
您可以在 netlify 上设置环境变量。请检查以下图片。
我有一个 netlify React 应用程序。它连接到我的 github。我正在使用 emailjs 接收来自任何访问我的应用程序的人的消息。
emailjs 处理三个 id 'SERVICE_ID'、'TEMPLATE_ID' 和 'USER_ID'。但我不想在我的组件 js 文件中公开使用它们。
驱动函数
function sendEmail(e) {
e.preventDefault(); //This is important, i'm not sure why, but the email won't send without it
emailjs.sendForm(SERVICE_ID, TEMPLATE_ID, e.target, USER_ID)
.then((result) => {
window.location.reload() //This is if you still want the page to reload (since e.preventDefault() cancelled that behavior)
}, (error) => {
console.log(error.text);
});
}
勾选Adding env variables to react app
您可以在您的根目录中创建一个 .env
并在其中添加您的密钥、api 端点...。
我认为您指的是环境变量,为了在本地进行测试,它会根据您用于创建应用程序的堆栈而有所不同,如果您使用 react create app,则可以在项目的根并填充值
REACT_APP_SERVICE_ID ="your_value"
REACT_APP_TEMPLATE_ID ="your_value"
REACT_APP_USER_ID ="your_value"
不要忘记从 git 中排除此文件,以避免在您的存储库中推送机密。为此,请将其添加到您的 .gitignore
.env
之后,您可以使用 process.env 调用代码中的变量,如下所示:
process.env.REACT_APP_SERVICE_ID
现在修改代码:
function sendEmail(e) {
// Your code
emailjs.sendForm(process.env.REACT_APP_SERVICE_ID, process.env.REACT_APP_TEMPLATE_ID, e.target, process.env.REACT_APP_USER_ID)
// your promise
}
要在 netlify 中工作,您必须在 netlify 项目中添加变量,请按照本节进行操作:https://docs.netlify.com/configure-builds/environment-variables/#declare-variables
如您所述,我添加了前缀 REACT_APP_,这是因为 react create app 这样做:
Note: You must create custom environment variables beginning with REACT_APP_. Any other variables except NODE_ENV will be ignored to avoid accidentally exposing a private key on the machine that could have the same name. Changing any environment variables will require you to restart the development server if it is running.
如果您使用的是 gatsby 或 nextjs,环境变量命名约定可能会发生变化,因此请注意这一点。
您可以在 netlify 上设置环境变量。请检查以下图片。