Deployment 盖茨比源内容选项生成错误

Deployment 盖茨比源内容选项生成错误,deployment,gatsby,netlify,contentful,Deployment,Gatsby,Netlify,Contentful,很久以前,我和盖茨比建立了一个网站,我的页面使用了静态降价。 现在我想把我所有的帖子都放到Contentful上,并且在开发中一切都很好。 当我在Netlify上部署我的网站时,它给了我一个错误。 我一直在寻找解决方案,但还没有找到。 我试图在本地运行构建,但它抛出了这个错误,所以我认为在部署之前需要先修复这个错误 ERROR Problems with gatsby-source-contentful plugin options: spaceId: undefined - "spaceI

很久以前,我和盖茨比建立了一个网站,我的页面使用了静态降价。 现在我想把我所有的帖子都放到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变量作为字符串编写,那么构建确实会在本地运行,这让我相信它会在部署时运行。

您必须使用
GATSBY
前缀在Netlify中设置
.env
变量。因此,您的
CONTENTFUL\u ID
变量将是
GATSBY\u CONTENTFUL\u ID

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

有关更多信息,请访问:

盖茨比环境变量

任何前缀为
GATSBY_u
的环境变量都将由 Gatsby和在浏览器中提供客户端JavaScript 通道有关更多信息,请访问有关环境变量的盖茨比文档 信息


以及。

在多次尝试调试我的代码并安装以前版本的
gatsby source contentful
之后,我发现如果您在
contentful
上没有
媒体,您将得到一个错误。

要修复任何类似的错误,您只需在
contentful
本身上添加一个虚拟媒体,它就可以正常工作。

在环境变量.env.development中,您需要添加

CONTENTFUL_SPACE_ID = <Paste here your space Id>
CONTENTFUL_ACCESS_TOKEN = <Paste here your delivery API - access token>
CONTENTFUL\u SPACE\u ID=
内容访问令牌=

在进行这些更改后,它仍然会引发相同的错误,即spaceId和accessToken在本地和部署时都未定义。为了清楚起见,我确实将我的CONTENTFUL\u SPACE\u ID编辑为GATSBY\u CONTENTFUL\u SPACE\u ID,尝试不/并将代码中的引用更改为env.GAT。。但是,试图触发手动部署清理缓存似乎没有什么改变。还有,我只是想让你放心。您
gatsby config.js
具有正确的变量,不是吗?尝试了多次以这种方式触发部署,但没有解决问题。另外,是的,我可以确认
gatsby config.js
具有
process.env.CONTENTFUL\u SPACE\u ID
,等等。将
process.env.CONTENTFUL\u SPACE\u ID
更改为
process.env.gatsby\u CONTENTFUL\u SPACE\u ID
所有环境变量必须具有相同的命名。在Netlify中设置它们后,需要在本地进行更改。当然,如果
.env.development
的变量没有
GATSBY\uu
前缀,它将失败。