i3b*_*man 5 environment-variables node.js contentful gatsby azure-static-web-app
我正在尝试通过 Azure Static Web 应用程序发布 Gatsbyjs。我有一个插件(gatsby-source-contentful)。
我需要传递如下变量:
{
resolve: `gatsby-source-contentful`,
options: {
spaceId: process.env.CONTENTFUL_SPACE_ID,
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
},
},
Run Code Online (Sandbox Code Playgroud)
错误:
Running 'npm run build'...
> gatsby-starter-default@0.1.0 build /github/workspace
> gatsby build
success open and validate gatsby-configs - 0.021s
error Invalid plugin options for "gatsby-source-contentful":
- "accessToken" is required
- "spaceId" is required
not finished load plugins - 0.905s
Run Code Online (Sandbox Code Playgroud)
我可以在哪里通过这个?
谢谢。
小智 12
对于 Azure 静态 Web 应用程序,有两种设置环境变量的方法,一种用于前端,一种用于后端方案。
由于您正在使用 Gatsby,我想可以安全地假设您正在构建前端。为此,您需要在构建配置中添加环境变量 (azure-static-web-apps-.yml)。
就像这样:
env: # Add environment variables here
CONTENTFUL_SPACE_ID: <your-id>
Run Code Online (Sandbox Code Playgroud)
这是文档中的链接。
不要与用于定义后端环境变量的这个混淆。
它们被称为环境变量。它们旨在存储敏感数据,例如令牌、标识符等,并且不应将它们推送到您的存储库中,因此您应该忽略它们(在您的.gitignore文件中)。
默认情况下,Gatsby 在没有注意到您的情况下创建了 2 个环境,每个环境对应一种编译方法:
gatsby develop:用途.env.developmentgatsby build:用途.env.production注意:如果需要使用自定义命令添加您自己的环境,您可以更改此行为NODE_ENV。
因此,要将数据传递给您,gatsby-config.js您只需在项目的根目录下创建两个文件(.env.development和)。.env.production然后,在您的顶部添加以下代码片段gatsby-config.js:
require("dotenv").config({
path: `.env.${process.env.NODE_ENV}`,
})
Run Code Online (Sandbox Code Playgroud)
注意:dotenv已经是Gatsby的依赖所以不需要再次安装
这将告诉 Gatsby 在哪里获取环境变量。
您只需填充这两个环境文件即可。在 Contentful 中查找凭据,并使用与您在 中设置的相同的命名将它们添加到文件中gatsby-config.js:
CONTENTFUL_SPACE_ID=123456789
CONTENTFUL_ACCESS_TOKEN=123456789
Run Code Online (Sandbox Code Playgroud)
另请记住,在使用 Azure、Netlify、AWS 或类似的 CI/CD 工具时,您需要向服务器提供相同的环境文件,以避免在推送更改时发生代码破坏。
| 归档时间: |
|
| 查看次数: |
9720 次 |
| 最近记录: |