GatsbyJS webpack错误,未定义的变量

时间:2018-05-09 14:35:07

标签: javascript reactjs nginx webpack gatsby

当我运行gatsby build以在我的nginx服务器上构建公共文件时,我很难理解服务器抛出的错误

error Building static HTML for pages failed
WebpackError: Cannot read property 'map' of undefined

奇怪的是,当我运行gatsby开发,在我的本地机器上构建时,一切正常,没有错误。只有当我在我的Nginx服务器上运行gatsby构建时,才会弹出此错误。这两个文件也正确同步。

根据错误,标签未定义。但它确实存在,我已经使用localhost graphQL进行了检查。这就是我描述变量的方式,但如果它不起作用,那么其余的如title,slug,date,html也不应该工作。但是当我拿出标签时它会发生。

    const {title, date, slug, excerpt } = this.props.data.contentfulBlog;
    const tags = this.props.data.contentfulBlog.category;
    const html = this.props.data.contentfulBlog.childContentfulBlogHtmlTextNode.childMarkdownRemark.html;

    return(
    <div>
      <Helmet> 
            <title>{title}</title>
            <meta name="description" content={excerpt}/>
            <meta name="keywords" content={tags.map((tag) => (String(tag.tagTitle)))}/>
      </Helmet>

所以我不知道为什么在我的服务器上构建它时无法访问tags变量,但它可以在本地机器上运行。谢谢!

2 个答案:

答案 0 :(得分:0)

虽然我不确定为什么你需要使用meta keywords,因为Google和其他搜索引擎don't use it for their ranking system,我认为你可以通过这样的方式解决你的问题:

<meta name="keywords" content={tags ? tags.map((tag) => (String(tag.tagTitle))) : ''}/>

答案 1 :(得分:-1)

我有同样的问题。

就我而言,道具x是一个数组,是必需的。但致电x.map返回

cannot read property 'map' of undefined

我通过为道具x提供默认值[]来解决了这个问题。