Deployment 盖茨比动态路由在gh页面部署时中断

Deployment 盖茨比动态路由在gh页面部署时中断,deployment,gatsby,github-pages,reach-router,dynamic-routing,Deployment,Gatsby,Github Pages,Reach Router,Dynamic Routing,我将我的第一个盖茨比项目部署到github页面: 回购: gh页面:(从gh页面生成branch) 它有一个页面,src/pages/app.tsx,用于动态路由 // app.tsx const App = () => ( <> <GlobalStyles /> <Provider store={store}> <ThemeProvider theme={theme}> <Router&

我将我的第一个盖茨比项目部署到github页面:
回购:
gh页面:(从
gh页面生成
branch)

它有一个页面,
src/pages/app.tsx
,用于动态路由

// app.tsx
const App = () => (
  <>
    <GlobalStyles />
    <Provider store={store}>
      <ThemeProvider theme={theme}>
        <Router>
          <Homepage path={`${BASE_URL}/app/`} />
          <Team path={`${BASE_URL}/app/team/:teamName/`} />
        </Router>
      </ThemeProvider>
    </Provider>
  </>
)
注意
BASE\u URL
等于
/stf,然后在生产环境版本中单击
,在其他环境中单击

在开发模式下一切正常(
gatsby develope
),但在部署的版本上,如果不使用
/app/
作为应用程序的入口点(转到
/app/
并单击蓝色按钮,则无法访问
/team/:teamName

打开链接会直接导致404(除非之前通过
/app/
访问链接进行缓存,但ctrl+f5会再次导致404)

At似乎在应用程序部署后,
gatsby.node.js
就不能正常工作。我最初怀疑它根本不起作用,但显然情况并非如此,因为注释所有代码会进一步破坏应用程序(通过
/app
的链接访问团队页面时,页面突然收支平衡)

我尝试在生产构建中用
BASE\u URL
gatsby node.js
中的路径前面加前缀,如下所示:

exports.onCreatePage=async({page,actions})=>{
const{createPage}=actions
if(page.path.match(/^\/stfu并单击\/app/){
page.matchPath='/stfu并单击/app/*'
createPage(第页)
}
}
并且在
gatsby node.js
中分别为这两条路径加前缀,但没有运气

在我的
gatsby config.json
:()

我使用以下纱线脚本进行部署:()


我该怎么做才能使我的路线正常工作?

我在工作时遇到了类似的问题。我在Vercel上主持了我的网站。基本上,服务器试图通过路径
动态路由/param/
定位文档,但它不知道动态路由。所以它抛出了一个404错误

为了解决这个问题,我必须在源代码中做两个更改

  • 在404.js文件中,我做了以下更改以消除404闪烁。在我的例子中,我在浏览器控制台中看到一个404错误
    const browser=窗口类型!==“未定义”和&window

    返回浏览器&&

  • 在vercel.json文件中,我必须向根页面添加重定向,如下所示
  • {“重写”:[{“源”:“/word finder/(.*),“目标”:“/word finder”}]}

    我注意到一个问题,页面是我的动态路由的根页面,其中包含一些文本。当用户搜索某个内容时,我只需将参数重定向到同一个页面,这些参数将呈现动态内容。在看到实际内容之前,我看到我的根页面闪烁着文本。 我相信这是由于URL重定向

    注:
    如果有人正在使用Netlify,他们可以在
    \u redirect
    文件中添加相同的行为。一定要把它放在
    static
    文件夹中,这样它在部署后会被复制。

    好的,听起来很有意思,我会在找到它的时候尝试找出一个类似的例子。谢谢因此,我尝试部署到Netlify,但我遇到了一个奇怪但阴暗的类似问题-我想这类似于您的404闪烁,只是使用了
    app.tsx
    ,并结合了一个emotionjs怪癖。您是否偶然发现了一个解决闪烁问题的好方法?在应用了我在回答中提到的解决方案后,我没有看到404闪烁。CSS/emotion js,甚至我在材质UI组件中也遇到了这种情况。作为一种解决方法,我将SCS用于效果组件。我只在动态页面上注意到这个问题。我已经将应用程序迁移到
    next.js
    ,它有SSR,Vercel通过无服务器功能支持它。盖茨比很好,但不适合我的项目。
    module.exports = {
      pathPrefix: '/stfuandclick',
      // ...
    }
    
    "deploy": "gatsby build --prefix-paths && gh-pages -d public"