如何在GraphQL查询中拼接变量与自定义路径字符串?
帮你搞定自定义路径加入$PATH与GraphQL查询的问题
嘿,我来拆解一下你的问题,分两部分给你说明解决方案:
一、把my/custom/path/添加到$PATH环境变量
不同操作系统的设置方法不一样,我分情况给你说:
Linux/macOS 终端配置
- 临时生效(只在当前终端窗口有效):直接在终端敲下面的命令就行
export PATH="$PATH:/my/custom/path/" - 永久生效(所有终端会话都能用):编辑你的shell配置文件(比如用bash就是
~/.bashrc,zsh就是~/.zshrc),在文件末尾加上上面的export命令,然后运行下面的命令让更改立刻生效:
验证是否成功:输入# bash用户 source ~/.bashrc # zsh用户 source ~/.zshrcecho $PATH,看看输出里有没有你的my/custom/path/就行。
Windows(命令提示符/PowerShell)
- 临时生效(仅当前窗口):
- 命令提示符:
set PATH=%PATH%;C:\my\custom\path\ - PowerShell:
$env:PATH += ";C:\my\custom\path\"
- 命令提示符:
- 永久生效:通过系统设置来改
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里找到
Path,点击「编辑」 - 点「新建」,输入你的自定义路径
C:\my\custom\path\,然后一路保存就行。
二、关于你的GraphQL查询代码
先看你贴的这段代码:
export const postQuery = graphql` query BlogPostByPath($path: String!) { markdownRemark(frontmatter: { path: { eq: $path } }) { html frontmatter { path title description keywords } } } `;
这段查询的逻辑是没问题的——它是根据传入的$path变量,匹配Markdown文件frontmatter里的path字段,然后返回对应的文章内容和元数据。
如果要结合你刚才的自定义路径使用,得先确保Gatsby(或者你用的其他静态站点生成器)能扫描到my/custom/path/下的Markdown文件。比如在gatsby-config.js里配置gatsby-source-filesystem插件:
module.exports = { plugins: [ { resolve: `gatsby-source-filesystem`, options: { name: `posts`, path: `${__dirname}/my/custom/path/`, // 这里填你的自定义路径 }, }, // 其他插件配置... ], };
配置好之后,Gatsby就会读取这个路径下的Markdown文件,你的GraphQL查询就能正常根据$path变量找到对应的文章了。
内容的提问来源于stack exchange,提问作者NealVDV
相关产品推荐
相关产品推荐

