错误:BabelPluginRemoveGraphQL:字符串插值

时间:2018-11-16 13:59:20

标签: graphql gatsby

尝试通过Graphql在gats中动态传递变量时,出现错误提示。

错误

Module build failed (from ./node_modules/gatsby/dist/utils/babel-loader.js):
Error: BabelPluginRemoveGraphQL: String interpolations are not allowed in graphql fragments. Included fragments should be referenced as `...MyModule_foo`.

查询

let mytext = 'welcome'
let myQuery = graphql`query($text: String = "${mytext}") {
            allGhostPost : allGhostPost(filter:{title:{eq: $text}}) {
              edges {
                node {
                  id
                  slug
                }
              }
            }
          }`

请帮助!!!

1 个答案:

答案 0 :(得分:1)

在这样的查询中插入任意文本是well-known security issue,而Babel插件几乎肯定是禁止它的权利。 GraphQL定义了a JSON-over-HTTP payload format,它允许分别传递变量(编码为JSON对象,以最大程度地减少注入攻击的可能性)。

您没有显示查询的实际作用,但是应该有一个添加GraphQL变量映射的地方。 (例如,graphql-js参考实现包括its top-level graphql functionvariableValues参数。)删除查询的= "${mytext}"部分,而使用{text: mytext}之类的变量对象