我目前正在使用Gatsby为我开发的组件库构建一个文档站点。我已经安装了变压器-备注插件,它为我的站点结构中的每个标记文件创建javascript对象。
由于站点是用于文档的,我有一个组件详细页面,它概述了一个组件如何被消费者使用,并且该页面的大部分内容来自于NPM上相应包的README.MD。
在这个页面的左边是一个动态菜单,它列出了我创建的组件。菜单使用自定义Gatsby模板中的GraphQL查询将组件划分为3类,它们基于fileAbsolutePath的RegEx筛选器,如下所示:
export const pageQuery = graphql`
query($path: String!) {
pageData:
markdownRemark(fields: { slug: { eq: $path } }) {
html
fields {
slug
title
}
fileAbsolutePath
}
atoms:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-atoms-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
molecules:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-molecules-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
organisms:
allMarkdownRemark(sort: {order: ASC, fields: [fields___title]}, limit: 1000, filter: {fileAbsolutePath: {regex: "/dl-organisms-(\w+)/README/"}}) {
edges {
node {
fields {
slug
title
}
}
}
}
}
`;
但是,当我试图运行Gatsby开发时,我会得到以下错误:
语法错误:无效字符转义序列:\w.
我已经尝试在字符串之前添加第二个反斜杠来转义它,但这是行不通的。
是否有一种特殊的方法可以在RegEx过滤器中转义GraphQL中的某些字符?
编辑:
我应该补充一点,在这个RegEx测试站点上,相同的RegEx可以正常工作:https://regexr.com/436ep。
发布于 2019-07-19 06:53:53
我认为你的问题的答案在这条线上:https://github.com/gatsbyjs/gatsby/issues/10009
TLDR:在gatsby-node.js中创建完整查询并将其传递到模板中。
https://stackoverflow.com/questions/53321612
复制相似问题