javascript - GatsbyJS webpack错误,未定义的变量
问题描述
当我运行 gatsby build 在我的 nginx 服务器上构建公共文件时,我很难理解服务器抛出的错误
error Building static HTML for pages failed
WebpackError: Cannot read property 'map' of undefined
奇怪的是,当我在本地机器上运行 gatsby develop 时,一切正常,没有报错。只有当我在我的 Nginx 服务器上运行 gatsby build 时,才会弹出此错误。这两个文件也正确同步。
根据错误,未定义标签。但它确实存在,我已经使用 localhost graphQL 检查过。然后转到我描述变量的方式,但如果它不起作用,那么标题、slug、日期、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 变量,但它可以在本地机器上运行。谢谢!
解决方案
虽然我不确定为什么您需要使用元数据keywords
,因为 Google 和其他搜索引擎不将它用于他们的排名系统,但我认为您可以通过执行以下操作来解决您的问题:
<meta name="keywords" content={tags ? tags.map((tag) => (String(tag.tagTitle))) : ''}/>
推荐阅读
- google-apps-script - 有没有办法使用随机生成的随机数作为变量?
- javascript - Angular如何检查模态是否打开
- r - 如何将预测从 tunRanger 传递到混淆矩阵?
- node.js - 前端未部署在 Heroku 中
- python - 可以根据类的 __init__ 方法中的条件定义属性吗?
- java - 当 >= 运行时,Java 是否隐式检查 > 和 ==?
- swift - AudioKit AKMetronome 回调时间似乎不精确或量化
- ruby-on-rails - Rails 6,Authlogic 6,跨浏览器的注销行为不一致
- python - 有没有办法调用函数“a”,它在可迭代/产生函数“b”上调用 next()
- javascript - 带有 ajax 和 Jquery 的进度条