You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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 ~/.zshrc
    
    验证是否成功:输入echo $PATH,看看输出里有没有你的my/custom/path/就行。

Windows(命令提示符/PowerShell)

  • 临时生效(仅当前窗口):
    • 命令提示符:
      set PATH=%PATH%;C:\my\custom\path\
      
    • PowerShell:
      $env:PATH += ";C:\my\custom\path\"
      
  • 永久生效:通过系统设置来改
    1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
    2. 在「系统变量」里找到Path,点击「编辑」
    3. 点「新建」,输入你的自定义路径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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:39:28