盖茨比国际化出了错

时间:2019-10-07 10:02:01

标签: javascript node.js reactjs webpack gatsby

错误#95313为路径“ / 404 /”构建静态HTML失败

我最近使用react-intl包在我的gatsby项目中实现了本地化。通过模仿 gatsby-starter-default-contentful-i18n回购中软件包的实现,我能够实现这一目标。当我运行gatsby-develop时,一切正常,但遗憾的是,在运行build之后,一切都不一样。

react-intl软件包需要一些路由配置才能启动并运行,这使我利用了布局组件中的位置道具,该组件暴露于路由路径,我也使用较早的链接回购协议将其实现为指南。但是,我总是遇到这个错误。

const url = location.pathname;
    |                            ^
36 |       const { langs, defaultLangKey } = data.site.siteMetadata.languages;
37 |       const langKey = getCurrentLangKey(langs, defaultLangKey, url);
38 |       const homeLink = `/${langKey}/`;

-WebpackError: TypeError: Cannot read property 'pathname' of undefined.

我一直指向url变量。我确保对所有从布局组件父代传递过来的位置道具进行交叉检查,以确保它们都不是未定义的,但仍然没有骰子。我真的不知道从哪里开始调试此问题。 下面是我的index.js文件。

import React from 'react';
import { graphql, navigate, withPrefix } from 'gatsby';
import { getUserLangKey } from 'ptz-i18n';

class RedirectIndex extends React.PureComponent {
  constructor(args) {
    super(args);

    // Skip build, Browsers only
    if (typeof window !== 'undefined') {
      const { langs, defaultLangKey } = args.data.site.siteMetadata.languages;
      const langKey = getUserLangKey(langs, defaultLangKey);
      const homeUrl = withPrefix(`/${langKey}/`);

      navigate(homeUrl);
    }
  }

  render() {
    // It's recommended to add your SEO solution in here for bots
    // eg. https://github.com/ahimsayogajp/ahimsayoga-gatsby/blob/master/src/pages/index.js#L22
    return (<div />);
  }
}

export default RedirectIndex;

export const pageQuery = graphql`
  query IndexQuery {
    site{
      siteMetadata{
        languages {
          defaultLangKey
          langs
        }
      }
    }
  }
`;

提前感谢所有帮助!

0 个答案:

没有答案