[GraphQL 错误]:消息:未知片段

Slo*_*wie 8 javascript graphql apollo-client webpack-encore

我想使用一些片段:

import {gql} from "apollo-boost";
import "../fragments/cardFragments.graphql"

export const ADD_CARD = gql`
    mutation AddCard {
        createCard(input: {
            private: true,
            section: "school",
            createdBy: "api/users/1"
        }) {
            card {
                ...CardFields
            }
        }
    }
`;

export default {ADD_CARD}
Run Code Online (Sandbox Code Playgroud)

卡片段.graphql:

fragment CardFields on card {
    id
    private
    section
    createdBy {
        id
    }
}
Run Code Online (Sandbox Code Playgroud)

在控制台内我收到错误:

[GraphQL 错误]:消息:未知片段“CardFields”。,位置:[对象对象],路径:未定义

我是不是忘记了什么?

编辑:

为了让 graphql 片段工作,我需要使用 webpack 加载它:Apollo 文档

我用以下方法做到了这一点Webpack Encore

.addLoader({
    test: /\.(graphql|gql)$/,
    exclude: /node_modules/,
    loader: 'graphql-tag/loader',
});

module.exports = Encore.getWebpackConfig();
Run Code Online (Sandbox Code Playgroud)

在我这样做之前 - 我收到了一个关于 .graphql 内部不可加载的 .graphql 扩展的错误Webpack Encore

关于使用创建 cutsom 加载程序,有什么我看不到的吗Webpack Encore

Mic*_*ael 7

你应该import { CardFields } from "../fragments/cardFragments.js"然后在你的突变中使用这个片段,如下所示:

import {gql} from "apollo-boost";
import { CARD_FEILDS } from "../fragments/cardFragments.js"

export const ADD_CARD = gql`
    mutation AddCard {
        createCard(input: {
            private: true,
            section: "school",
            createdBy: "api/users/1"
        }) {
            card {
                ...CardFields
            }
        }
    }
    ${CARD_FEILDS}
`;

export default {ADD_CARD}
Run Code Online (Sandbox Code Playgroud)

在cardFragments.js中:

import {gql} from "apollo-boost"
export const CARD_FEILDS = gql `
  fragment CardFields on card {
    id
    private
    section
    createdBy {
        id
    }
  }
`
Run Code Online (Sandbox Code Playgroud)