当我运行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变量,但它可以在本地机器上运行。谢谢!
答案 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
提供默认值[]
来解决了这个问题。