最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

盖茨比开发命令运行,但盖茨比构建错误

运维笔记admin13浏览0评论

盖茨比开发命令运行,但盖茨比构建错误

盖茨比开发命令运行,但盖茨比构建错误

我正在使用gatsby-node.js文件动态创建页面

let allProducts = result.data.allProducts.edges
    createPage({
        path: `/products`,
        component: require.resolve('./src/pages/products.js'),
        context: { allProducts }
    });

  //Create a page for each Product.
  allProducts.map((edge)=>{
    let product = edge.node
    createPage({
      path:`/product/${product.id}`,
      component: require.resolve('./src/pages/product.js'),
      context:{product}
    })
  })

Gatsby开发运行良好,但是当我做盖茨比构建它时会出错

错误为页面构建静态HTML失败

有关帮助/debug-html的调试HTML构建,请参阅我们的文档页面

  43 |         <div >
  44 |             <Img fluid={data.bannerHeaderProduct.childImageSharp.fluid}/>
> 45 |             <img src={product.imgSrc }alt=""/>
     |                               ^
  46 |         </div>
  47 |         <div>
  48 |             <h3 dangerouslySetInnerHTML={{__html:product.name}}>

WebpackError:TypeError:无法读取未定义的属性“imgSrc”

我作为上下文传递给页面的产品未定义

回答如下:

看到你的代码,它会工作正常。 createPage结构没问题。

根据我的经验,有时gatsby / graphql错误发射器没有显示正确的错误行,如果有很多变量具有相同的名称(imgSrc)gatsby错误发射器显示第一个出现变量,而不是错误的变量。

要确认在返回渲染之前应该放置“if”,检查产品是否未定义。这是在构建期间防止渲染错误的好方法:

render(){
   const {product} = this.props.pathContext;

   if(product === undefined) return null;

   ......

   return <div>....</div>;
}

您还可以在gatsby-node中显示一个console.log,显示“allProducts”和“product”变量,在构建期间检查变量结构。

你能回复一下结果吗?

发布评论

评论列表(0)

  1. 暂无评论