如何在gatsbyjs中启用 GATSBY_CONTENTFUL_OFFLINE=true
以脱机访问内容?
文档建议export GATSBY_CONTENTFUL_OFFLINE=true
。我尝试在配置中添加它,但仍然不起作用。谁能告诉我在哪里添加此导出,否则功能是否实际工作?
您将在.bashrc中使用export …
或类似。您将从Shell脚本将可变声明导出到Shell会话中,从而作为环境变量可用。这样可以防止您在gatsby [command]
的每个调用中声明变量。
您也可以使用.env.development
来声明此值(无export
),而Gatsby会捡起它,也可以将.env
与配置的Dotenv软件包一起使用。
它有效,但是:
- 您必须真正离线
-
NODE_ENV
不是production
(又称gatsby build
)
请参阅此处的实现
因此,我认为这只是一个方便的标志,可以使您在没有互联网连接的情况下开发。我不确定export ...
的DOC是什么意思,但是由于他们检查了process.env.GATSBY_CONTENTFUL_OFFLINE
,因此您可以通过将其准备为在终端中运行的任何命令(忽略$
):
$ gatsby develop
# GATSBY_CONTENTFUL_OFFLINE is undefined
$ GATSBY_CONTENTFUL_OFFLINE=true gatsby develop
# GATSBY_CONTENTFUL_OFFLINE is true
$ GATSBY_CONTENTFUL_OFFLINE=true gatsby build
# GATSBY_CONTENTFUL_OFFLINE is true, but contenful doesn't care
# because NODE_ENV is always set to `production`
这样做(关闭网络之后)时,您应该在控制台中看到该记录:
使用内容的离线缓存⚠️
如果您编辑package.json,gatsby-node.js或gatsby-config.js文件
,可能会使缓存无效。
我尝试了上述解决方案,但这对我不起作用。我有一个完全不同的问题。我以前从未使用过gatsby
。
因此,首先,我已经安装了gatsby
,然后在.env.development
中检查了CONTENTFUL_ACCESS_TOKEN
。访问令牌,它与CONTENTFUL_SPACE_ID
相同。
所以,我更新了 CONTENTFUL_ACCESS_TOKEN
并起作用。
从内容的门户更新CONTENTFUL_ACCESS_TOKEN
的步骤是:
- 我导航到满足的门户。并从左图中选择了我的空间。
- 导航到设置 - >API键
- 在 content threseverion/preview tokens 选项下,我选择了键的名称(如果您有多个键,请匹配SpaceID)
- 复制
Content Delivery API - access token
并将其粘贴到您的.env.development
文件中。保存。 - 然后运行Gatsby开发