【问题标题】:Gatsby project not developing because of connection error with Contentful由于与 Contentful 的连接错误,Gatsby 项目未开发
【发布时间】:2022-08-04 13:53:44
【问题描述】:

我在新计算机上打开了一个旧的 Gatsby 项目来尝试完成,但是当我尝试设置我的开发时,我遇到了这个问题:

 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 onPreInit - 0.030s

我做了一些研究,看到了这个post,它说他们可以运行开发服务器,但不能运行 Gastby 构建。我更新了我的 Contentful API 密钥,我的 .env 文档,并确保主环境已被选中,但我仍然遇到这个问题。有谁知道该怎么做?

这是我的Github repo

    标签: environment-variables gatsby contentful gatsby-source-contentful


    【解决方案1】:

    在您的 gatsby-config.js 文件中,您应该加载环境变量 如果您在 .env 文件下定义,则以下代码段应该可以工作,因此您的 spaceID 和 accessToken 不会未定义。 在gatsby-config.js 的开头添加:

    require("dotenv").config()
    

    你可以参考这个 https://www.gatsbyjs.com/docs/how-to/local-development/environment-variables/

    【讨论】:

      【解决方案2】:

      您需要设置环境变量。按着这些次序:

      • 在您的gatsby-config.js 中添加以下 sn-p:

        require("dotenv").config({
           path: `.env.${process.env.NODE_ENV}`,
        })
        

        dotenv 是 Gatsby 的一个依赖项,所以你不需要安装任何额外的东西。

        一旦 sn-p 在您的 gatsby-config.js 中,Gatsby 将分别在运行 gatsby developgatsby build 时使用您的 .env.development.env.production。请注意,这是默认行为,您可以通过更改NODE_ENV 变量或在上面的sn-p 中设置path 来自定义目标环境文件

        NODE_ENV 等于 developmentproduction,这就是 Gatsby 在不同命令中获取每个文件的原因。

      • 将您的环境变量放在.env.development.env.production 文件中:

        CONTENTFUL_ACCESS_TOKEN=yourAccessToken
        CONTENTFUL_SPACE_ID=yourSpaceId
        
      • 使用gatsby-source-contentful 时定位环境变量:

          {
            resolve: `gatsby-source-contentful`,
            options: {
              spaceId: process.env.CONTENTFUL_SPACE_ID,
              accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
            },
          },
        
        

      【讨论】:

      • 知道dotenv 是 Gatsby 的依赖项,因此无需安装任何额外的东西是关键信息谢谢!
      • 我将该 sn-p 添加到 gatsby-config 文件中,但它仍然给出一个错误,它无法找到 .env 文件。有什么我想念的吗?
      • 除了上面加上sn-p,你有没有把两个环境文件(.env.development.env.production)加到项目的根目录下,里面有变量?如果是这样,请运行 gatsby clean 清理缓存
      • 是的,我已经使用变量将这两个文件添加到根目录并清理缓存。我尝试运行 npm run develop 并收到一条错误消息:Error: Failed to find .env file at default paths: [./.env,./.env.js,./.env.json] at getEnvFile
      • 这很奇怪。他们在开始时是用点号调用的吗?你能分享你的项目结构吗?
      猜你喜欢
      • 2022-10-22
      • 1970-01-01
      • 2020-06-28
      • 2020-08-15
      • 2023-03-18
      • 2020-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      相关资源
      最近更新 更多