开发者问题收集

gatsby-source-contentful 选项构建时出错

2020-05-13
2471

前段时间,我用 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 变量写为字符串,则构建会在本地运行,这让我相信它会在部署时运行。

3个回答

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

在此处输入图像描述

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

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

Gatsby environment variables

Any environment variables prefixed with GATSBY_ will be processed by Gatsby and made available in the browser for client-side JavaScript access. Visit the Gatsby docs about environment variables for more information.

以及 Gatsby 的文档

Ferran Buireu
2020-05-13

经过多次尝试调试我的代码并安装以前版本的 gatsby-source-contentful 后,我发现如果 contentful 上没有 Media ,则会出错。 要修复任何类似的错误,您需要做的就是在 contentful 本身上添加一个虚拟媒体,它就可以正常工作。

John
2020-05-13

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

CONTENTFUL_SPACE_ID = <Paste here your space Id>
CONTENTFUL_ACCESS_TOKEN = <Paste here your delivery API - access token>
Trinh Hieu
2020-10-05