一段时间以前,我在Gatsby上做了一个网站,并且对页面使用了静态markdown。现在,我想将我所有的帖子都放在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! [email protected] build: `gatsby build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] 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变量写为字符串,则该构建确实在本地运行,这使我相信它会在部署时完成。
您必须.env
在Netlify中使用GATSBY_
前缀设置变量。因此,您的CONTENTFUL_ID
变量将为GATSBY_CONTENTFUL_ID
。
建议在本地环境和构建环境中使用相同的命名,以保持它们之间的逻辑。因此,您还需要在本地环境中为要.env
使用的所有引用添加前缀GATSBY_
。为此,您可能需要创建一个.env.development
,.env.production
如果之前没有设置过。
您可以在Netlify文档中检查更多信息:
盖茨比环境变量
带有前缀的任何环境变量
GATSBY_
都将由Gatsby处理,并在浏览器中可用于客户端JavaScript访问。有关更多信息,请访问关于环境变量的Gatsby文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句