首页 > 解决方案 > 构建时 gatsby-source-contentful 选项错误

问题描述

前段时间,我用 Gatsby 创建了一个网站,并为我的页面使用了静态降价。现在我想将我所有的帖子移到 Contentful 上,并且在开发中一切正常。当我继续使用 Netlify 部署我的网站时,它给了我一个错误。我一直在寻找解决方案,但还没有找到。我试图在本地运行构建,它抛出了这个错误,所以我相信我需要在部署之前先解决这个问题。

ERROR 

Problems with gatsby-source-contentful plugin options:
spaceId: undefined - "spaceId" is required
accessToken: undefined - "accessToken" is required
host (default value): "cdn.contentful.com"
environment (default value): "master"
downloadLocal (default value): false
localeFilter (default value): [Function]
forceFullSync (default value): false
pageLimit (default value): 100
useNameForId (default value): true

not finished onPreBootstrap - 0.056s
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gatsby-starter-hello-world@0.1.0 build: `gatsby build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gatsby-starter-hello-world@0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\user\AppData\Roaming\npm-cache\_logs\2020-05-13T15_20_35_160Z-debug.log

显然它不读取 .env 变量。我确实在 Netlify 上设置了变量,正如我之前在开发中所说的那样,它可以正常工作而不会引发任何类型的错误。

我之前没有安装'dotenv'并尝试安装它但没有解决问题。我确实只有一个“.env”文件,但尝试制作“.env.development”和“.env.production”文件但没有成功。

我该如何解决这个问题?作为额外的,我确实遇到了一些错误,仅在 Netlify 上,例如

error There was an error in your GraphQL query:
Unknown type "ContentfulFluid". 

但我认为它们不会导致构建失败。

编辑:我应该补充一点,如果我将 .env 变量写为字符串,那么构建确实会在本地运行,这让我相信它会在部署时运行。

标签: deploymentgatsbynetlifycontentful

解决方案


您必须.env在 Netlify 中使用GATSBY_前缀设置变量。所以,你的CONTENTFUL_ID变量将是GATSBY_CONTENTFUL_ID.

在此处输入图像描述

建议在本地和构建环境中使用相同的命名,以保持它们之间的逻辑。因此,您还需要为在本地环境中.env使用的所有引用添加前缀。GATSBY_为此,您可能需要创建一个.env.development.env.production如果您之前没有设置它。

您可以在Netlify 文档中查看更多信息:

盖茨比环境变量

任何以 为前缀的环境变量GATSBY_都将由 Gatsby 处理,并在浏览器中提供给客户端 JavaScript 访问。请访问有关环境变量的 Gatsby 文档以获取更多信息。

以及在Gatsby 的文档中。


推荐阅读