代码之家  ›  专栏  ›  技术社区  ›  Omkar Dhumal

错误路径未定义引用错误:路径未定义盖茨比节点。js

  •  1
  • Omkar Dhumal  · 技术社区  · 2 年前

    我希望通过JsonApi从Drupal站点获取数据到盖茨比。
    我想呈现特定的内容类型与所有的细节和信息。
    我可以使用JsonApi从drupal站点获取文章标题,但现在我想在另一个页面上呈现该文章的图像和信息(内容类型)。所以我用 createPage 方法,但我得到了以下错误:

    **ERROR path is not defined ReferenceError: path is not defined - gatsby-node.js:28**

    参考链接 here :

    我的文件结构

    1. 盖茨比节点。js
    exports.createPages = async ({ graphql, actions, getNodesByType }) => {
      const { createPage } = actions;
    
      const allArticles = await graphql(`
      {
        allNodeArticle {
          nodes {
            title
            drupal_internal__nid
            path {
              alias
            }
            relationships {
              field_image {
                uri {
                  url
                }
              }
            }
          }
        }
      }
      `);
    
      allArticles.data.allNodeArticle.nodes.map(async (node) => {
        createPage({
          path: node.path.alias,
          component: path.join(__dirname, '/src/Components/Articledetails.js'),
          context: {
            id: node.drupal_internal__nid,
          }
        })
      });
    }
    
    1. 表册js文件
    import React from "react";
    import { graphql, Link  } from "gatsby"
    
    const listing = ({data}) => {
      return (
              data.allNodeArticle.nodes.map((info) =>
              <div>
                  <div>
                      <h2><Link to={"/node/" + info.drupal_internal__nid}>{info.title}</Link></h2>
                  </div>
              </div>
              )
      )
    }
    export const query = graphql`
    {
      allNodeArticle {
        nodes {
          title
          drupal_internal__nid
          path {
            alias
          }
          relationships {
            field_image {
              uri {
                url
              }
            }
          }
        }
      }
    }
    `
    export default listing
    

    文件夹/目录结构如屏幕截图所示。 enter image description here

    0 回复  |  直到 2 年前
        1
  •  1
  •   Himanshu Rathore    2 年前

    const path = require('path')

    导入路径模块,它就会工作

        2
  •  0
  •   Ferran Buireu    2 年前

    在问题的范围之外,你应该替换你的 map 循环一次 forEach 循环:

      allArticles.data.allNodeArticle.nodes.forEach((node) => {
        createPage({
          path: node?.path?.alias,
          component: path.join(__dirname, '/src/Components/Articledetails.js'),
          context: {
            id: node.drupal_internal__nid,
          }
        })
      });
    

    再检查一遍 path alias 在所有文章引用中都满足。

    关于你的主要问题( ERROR path is not defined ReferenceError: path is not defined - gatsby-node.js:28 )是因为 路径 ,首先需要将其作为模块导入:

    const path = require(`path`);
    

    这将允许你这样做 path.join .