【问题标题】:'gatsby-source-graphql' causes load plugins error quoting 'gatsby/graphql'“gatsby-source-graphql”导致加载插件错误引用“gatsby/graphql”
【发布时间】:2021-05-08 08:09:04
【问题描述】:

我有一个正在添加的 Gatsby 安装,但是,在尝试构建一些 graphQL 构建时数据获取时,我遇到了一个导致错误的问题运行 npm start (gatsby develop)gatsby build

我安装了 gatsby-source-graphql,如下所述: https://www.npmjs.com/package/gatsby-source-graphql

我将它包含在我的 gatsby-config.js 中,如下所示:

module.exports = {

  // Optional
  siteMetadata: {
    title: `Title from siteMetadata`,
  },


  plugins: [
    {
      resolve: `gatsby-plugin-manifest`,
      options: {
        name: "Project Template",
        short_name: "PT",
        start_url: "/",
        background_color: "#6b37bf",
        theme_color: "#6b37bf",
        // Enables "Add to Homescreen" prompt and disables browser UI (including back button)
        // see https://developers.google.com/web/fundamentals/web-app-manifest/#display
        display: "standalone",
        icon: "src/images/icon.png", // This path is relative to the root of the site.
        // An optional attribute which provides support for CORS check.
        // If you do not provide a crossOrigin option, it will skip CORS for manifest.
        // Any invalid keyword or empty string defaults to `anonymous`
        crossOrigin: `use-credentials`,
      },
    },
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `images`,
        path: `${__dirname}/src/images`,
      },
    },



    // GraphQL APIs for use during build-time.
    // https://www.npmjs.com/package/gatsby-source-graphql
    //////////////////////////////////////////////////////

    {
      resolve: "gatsby-source-graphql",
      options: {
        // Arbitrary name for the remote schema Query type
        typeName: "SpaceX",
        // Field under which the remote schema will be accessible. You'll use this in your Gatsby query
        fieldName: "spaceX",
        // Url to query from
        url: "https://api.spacex.land/graphql/",
      },
    },

    // {
    //   resolve: "gatsby-source-graphql",
    //   options: {
    //     // Arbitrary name for the remote schema Query type
    //     typeName: "SWAPI",
    //     // Field under which the remote schema will be accessible. You'll use this in your Gatsby query
    //     fieldName: "swapi",
    //     // Url to query from
    //     url: "https://swapi-graphql.netlify.app/.netlify/functions/index",
    //   },
    // },




    `gatsby-transformer-sharp`,
    `gatsby-plugin-sharp`,
    `gatsby-plugin-react-helmet`,
    `gatsby-theme-material-ui`,
    {
      resolve: `gatsby-plugin-nprogress`,
      options: {
        // Setting a color is optional.
        color: `tomato`,
        // Disable the loading spinner.
        showSpinner: false,
      },
    },
    `gatsby-plugin-transition-link`,
    `gatsby-plugin-layout`, // Trial and error showed this needs to be last (But that doesn't mean it will always work in the dev environment, try npm run clean or if that fails - test in build)
  ],

}

但它会产生这个错误:

Error in "/Users//Documents/projects/project/node_modules/gatsby-source-graphql/gatsby-node.js":
Cannot find module 'gatsby/graphql'



  Error: Cannot find module 'gatsby/graphql'

  - loader.js:636 Function.Module._resolveFilename
    internal/modules/cjs/loader.js:636:15

  - loader.js:562 Function.Module._load
    internal/modules/cjs/loader.js:562:25

  - loader.js:692 Module.require
    internal/modules/cjs/loader.js:692:17

  - v8-compile-cache.js:159 require
    [client]/[v8-compile-cache]/v8-compile-cache.js:159:20

  - gatsby-node.js:8 Object.<anonymous>
    [tbwa-project-template]/[gatsby-source-graphql]/gatsby-node.js:8:5

  - v8-compile-cache.js:178 Module._compile
    [client]/[v8-compile-cache]/v8-compile-cache.js:178:30

  - loader.js:789 Object.Module._extensions..js
    internal/modules/cjs/loader.js:789:10

  - loader.js:653 Module.load
    internal/modules/cjs/loader.js:653:32

  - loader.js:593 tryModuleLoad
    internal/modules/cjs/loader.js:593:12

  - loader.js:585 Function.Module._load
    internal/modules/cjs/loader.js:585:3

  - loader.js:692 Module.require
    internal/modules/cjs/loader.js:692:17

  - v8-compile-cache.js:159 require
    [client]/[v8-compile-cache]/v8-compile-cache.js:159:20

  - resolve-module-exports.ts:197 resolveModuleExports
    [client]/[gatsby]/src/bootstrap/resolve-module-exports.ts:197:26

  - validate.ts:348 forEach
    [client]/[gatsby]/src/bootstrap/load-plugins/validate.ts:348:31

  - Array.forEach

  - validate.ts:340 collatePluginAPIs
    [client]/[gatsby]/src/bootstrap/load-plugins/validate.ts:340:20


not finished load plugins - 0.727s

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! project-template@1.0.0 start: `gatsby develop`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the project-template@1.0.0 start 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!     /Users/_logs/2021-02-04T00_31_34_070Z-debug.log

我尝试过的:

  • 我已经在配置中尝试了两种不同的 gatsby-source-graphql 定义(一次只有一个),但都产生了错误。第二个(上面已注释掉)直接取自The github page exampleGatsby example

  • 我已尝试更改插件的顺序(我已尝试每个位置)但仍然出现错误。

  • 如果我在配置中评论任何和所有 gatsby-source-graphql 部分,它不会产生错误。

  • 如果我注释掉所有插件 除了 gatsby-source-graphql 部分之一,我仍然会得到完全相同的错误。

  • 我也尝试过删除 node_modules 文件夹,运行 npm run clean,然后再次 npm install,没有任何变化。

  • 我也尝试了以下链接中描述的 DanceParty 解决方案,没有任何变化: https://github.com/gatsbyjs/gatsby/issues/8249

  • 我尝试运行 npm updatenpm install npm@latest -g 并没有看到任何变化。

我使用 gatsby info --clipboard 的环境报告是:

  System:
    OS: macOS 10.15.7
    CPU: (4) x64 Intel(R) Core(TM) i5-6287U CPU @ 3.10GHz
    Shell: 5.7.1 - /bin/zsh
  Binaries:
    Node: 10.23.1 - /usr/local/bin/node
    npm: 6.14.10 - /usr/local/bin/npm
  Languages:
    Python: 2.7.16 - /usr/bin/python
  Browsers:
    Chrome: 88.0.4324.96
    Firefox: 85.0
    Safari: 14.0.2
  npmPackages:
    gatsby: ^2.26.1 => 2.32.0
    gatsby-image: ^2.10.0 => 2.11.0
    gatsby-plugin-layout: ^1.9.0 => 1.10.0
    gatsby-plugin-manifest: ^2.11.0 => 2.12.0
    gatsby-plugin-material-ui: ^2.1.10 => 2.1.10
    gatsby-plugin-nprogress: ^2.9.0 => 2.10.0
    gatsby-plugin-react-helmet: ^3.8.0 => 3.10.0
    gatsby-plugin-sharp: ^2.13.0 => 2.14.0
    gatsby-plugin-transition-link: ^1.20.5 => 1.20.5
    gatsby-source-filesystem: ^2.10.0 => 2.11.0
    gatsby-theme-material-ui: ^1.0.13 => 1.0.13
    gatsby-transformer-sharp: ^2.11.0 => 2.12.0
  npmGlobalPackages:
    gatsby-cli: 2.19.0

有什么想法吗?

【问题讨论】:

  • 您在哪里发现可以使用插件的多个实例? (因为Duplicate this whole entry to define additional sources.)。重装前有没有运行gatsby clean
  • 我想我只是根据此页面假设它:npmjs.com/package/gatsby-source-graphql,但是,尚未经过测试。我从来没有同时运行过两个 - 一个总是被注释掉。但我都尝试过并收到同样的错误。我已经稍微更新了问题以获取更多环境信息。
  • 如果有人偶然发现,只是一个更新:文档的示例暗示,对于多个查询,您在 gatsby-config.js 中定义了插件的多个实例。我现在已经对此进行了测试,并且可以确认它有效。

标签: plugins build graphql gatsby gatsby-plugin


【解决方案1】:

我开始创建一个最小的复制品并将所有内容逐个添加回来,但我决定在我的第一个设置中玩更多的东西......我很高兴我做到了。

导致问题的原因如下:

这个 Gatsby 安装是我们使用的项目模板的一部分,其中包括后端代码、前端、管道部署脚本等。 结构类似于:

ProjectTemplate 文件夹

  • 客户端文件夹
  • 服务器文件夹
  • 其他文件夹

Gatsby 安装在客户端文件夹中,但有时我需要进入根文件夹来执行某些操作。

所以发生了什么事!?

我不小心将gatsby-source-graphql 安装到了根文件夹而不是客户端文件夹中。就这样。 我应该在运行 gatsby info --clipboard 时选择它,因为它显然没有被列为依赖项。

【讨论】:

  • 感谢您的指出!如果问题已解决,您可以自行关闭(接受自己的答案)吗?
猜你喜欢
  • 2020-08-11
  • 2019-09-29
  • 1970-01-01
  • 2019-04-02
  • 2019-12-10
  • 2020-02-05
  • 2020-04-20
  • 2019-10-26
  • 2020-11-14
相关资源
最近更新 更多