В моем приложении Gatsby мне нужны следующие маршруты:
/branches
- показывает расположение филиалов магазинов. /branches/:id
- показывает информацию о конкретной ветви.
Для этого sh у меня есть следующая структура папок:
src
pages
branches
index.tsx
Внутри index.tsx
, у меня есть:
<code>import React from 'react'
import { Router } from '@reach/router'
const Comp = (props: { path: any }) => {
return <pre>{JSON.stringify(props, null, 2)}
} экспорт по умолчанию ( ) => {возврат ( )}
(Компонент Comp
предназначен только для демонстрации работоспособности.)
В моем файле gatsby-node.js
есть следующее:
// Implement the Gatsby API “onCreatePage”. This is
// called after every page is created.
exports.onCreatePage = async ({ page, actions }) => {
const { createPage } = actions
// page.matchPath is a special key that's used for matching pages
// only on the client.
if (page.path.match(/^\/branches/)) {
page.matchPath = '/branches/*'
// Update the page.
createPage(page)
}
}
Итак, в результате, когда я запускаю gatsby develop
, все работает как положено. Я могу посетить /branches
и /branches/4
и увидеть то, что ожидаю, компонент Comp
отображает некоторую информацию о маршрутизации:
{
"path": "/branches",
"uri": "/branches",
"location": {
"pathname": "/branches/",
"search": "",
"hash": "",
"href": "http://localhost:1337/branches/",
"origin": "http://localhost:1337",
"protocol": "http:",
"host": "localhost:1337",
"hostname": "localhost",
"port": "1337",
"state": null,
"key": "initial"
}
}
Однако при запуске развертывания на S3 с использованием gatsby build && gatsby-plugin-s3 deploy --yes
я получаю в перенаправление l oop:
В чем здесь проблема и как я могу ее решить?
(у меня есть экспериментировал с плагинами gatsby-plugin-force-trailing-slashes
и gatsby-plugin-remove-trailing-slashes
безрезультатно)