在github页面上部署后,Gatsby Links失败

问题描述 投票:0回答:1

我在盖茨比(我的第一个网站)创建了一个网站,我对部署页面上的盖茨比的链接感到困惑。我正在使用gatsby-starter-react-bootstrap,其中包括gatsby和react-bootstrap,顾名思义:)我在NavDropdown.Item中找到链接,它是react-bootstrap的元素。

import React from "react"
import {Link} from "gatsby"

import {Navbar, Nav, NavDropdown, Image} from "react-bootstrap"

import Logo from "../images/Logo_White_RGB_200x42px.png";
import customer_logo from "../images/customer_logo.svg";

const CustomNavbar = ({pageInfo}) => {

    return (
        <>
      <Navbar variant="dark" expand="md" id="site-navbar">
        {/* <Container> */}
        <Link to="/" className="link-no-style">
          <Navbar.Brand as="span">
              <Image src={Logo} />
          </Navbar.Brand>
        </Link>
        <Navbar.Toggle aria-controls="basic-navbar-nav" />
        <Navbar.Collapse id="basic-navbar-nav">
          <Nav className="mr-auto" activeKey={pageInfo && pageInfo.pageName}>
              <NavDropdown title="Project" id="collapsible-nav-dropdown">
                  <NavDropdown.Item><Link to="360-viewer" activeClassName="active">360 view</Link></NavDropdown.Item>
                  <NavDropdown.Item><Link to="map" activeClassName="active">map</Link></NavDropdown.Item>
                  <NavDropdown.Item><Link to="description" activeClassName="active">description</Link></NavDropdown.Item>
              </NavDropdown>
          </Nav>
          <Nav className="ml-auto">
              <Navbar.Text>
                  Customer: <a href="https://customer.com/"> Customer Group</a> <Image className="customer-logo" src={customer_logo}/>
              </Navbar.Text>
          </Nav>
        </Navbar.Collapse>
          {/* </Container> */}
      </Navbar>
    </>
    )
};

export default CustomNavbar

对于部署,我使用https://www.npmjs.com/package/gh-pages

开发版本在本地主机上本地运行:8000可以正常工作。下拉菜单和所有链接均正常运行。当我尝试将版本用于生产时,路由停止工作-gatsby构建会在index.html创建公用文件夹。当我在github页面上部署页面时,路由也不起作用。

摘要:

  1. 开发版本工作正常
  2. 生产和部署版本存在问题:
    • 当我单击下拉列表时,下拉菜单不会打开,并且#符号已添加到URL地址-www.website.com /#
    • [当我将网站地址添加到360-viewer时,页面正在打开,但是当我再次单击下拉菜单时,#号再次添加到URL -www.website.com/360-viewer /#
reactjs deployment hyperlink gatsby github-pages
1个回答
0
投票

您的应用程序因Github Pages而中断生产,因为与localhost不同,它不是从根URL提供的。要解决此问题,您可以让Gatsby知道将从哪个路径提供您的应用程序。然后,盖茨比将为您修复路由和链接。

gatsby-config.js中:

module.exports = {
  pathPrefix: "/your-repo-name",
}

然后将--prefix-paths标志添加到您的构建命令:gatsby build --prefix-paths

他们在文档中对此进行了更多解释:https://www.gatsbyjs.org/docs/how-gatsby-works-with-github-pages/#deploying-to-a-path-on-github-pages

© www.soinside.com 2019 - 2024. All rights reserved.