尝试通过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
}
}
}
}`
请帮助!!!
答案 0 :(得分:1)
在这样的查询中插入任意文本是well-known security issue,而Babel插件几乎肯定是禁止它的权利。 GraphQL定义了a JSON-over-HTTP payload format,它允许分别传递变量(编码为JSON对象,以最大程度地减少注入攻击的可能性)。
您没有显示查询的实际作用,但是应该有一个添加GraphQL变量映射的地方。 (例如,graphql-js参考实现包括its top-level graphql
function的variableValues
参数。)删除查询的= "${mytext}"
部分,而使用{text: mytext}
之类的变量对象