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