Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Question] Mako 如何处理React路由的路径问题? #1748

Closed
godcong opened this issue Jan 9, 2025 · 3 comments
Closed

[Question] Mako 如何处理React路由的路径问题? #1748

godcong opened this issue Jan 9, 2025 · 3 comments

Comments

@godcong
Copy link

godcong commented Jan 9, 2025

image

如图,调试的时候/路径可以直接访问,且跳转到指定路径.
但是直接输入地址就不行.
跳转后刷新页面也不行. <- 这个找了下好像是要设定historyApiFallback,但这选项Mako没呀...

以前用umi的时候可以在每个路径下生成index.html

不清楚mako需要怎么处理.

Copy link

在使用 React 路由时,遇到的问题通常与浏览器的刷新和直接访问路径有关。这是因为 React 路由通常是单页应用程序(SPA),它们依赖于 JavaScript 来处理路由,而不是服务器。

在开发环境中,通常会使用 historyApiFallback 来解决这个问题。historyApiFallback 是一个 webpack-dev-server 的选项,它允许你在使用 HTML5 的 History API 时,所有的 404 请求都将重定向到 index.html。这对于 SPA 来说是非常重要的,因为它们通常只有一个 HTML 文件。

然而,Mako 似乎没有直接提供 historyApiFallback 的选项。以下是一些可能的解决方案:

  1. 自定义服务器配置:如果 Mako 允许自定义服务器配置,你可以手动添加类似 historyApiFallback 的功能。

  2. 使用 Nginx 或 Apache:如果你在生产环境中使用 Nginx 或 Apache,可以配置它们来处理所有的路由请求并重定向到 index.html

  3. 生成静态文件:如果可能的话,尝试生成每个路径的 index.html 文件,这样即使在没有 JavaScript 的情况下,服务器也能正确响应请求。

  4. 检查 Mako 的文档或社区支持:查看 Mako 的文档或社区支持,看看是否有其他开发者遇到过类似的问题,并找到了解决方案。

如果你有进一步的问题或需要更多的帮助,请随时告诉我!

🪧 Tips For further assistance, please describe your question in the comments and @petercat-assistant to start a conversation with me.

@godcong
Copy link
Author

godcong commented Jan 9, 2025

额...有人能解答么? AI的回答没有解决问题.

@sorrycc
Copy link
Member

sorrycc commented Jan 10, 2025

Mako 是一个更纯粹的构建工具,没有提供完整的 dev server 能力。像 history fallback、mock、proxy 之类的,如果你是独立使用 mako,需要自行处理这部分的能力。可以参考 tnf 的实现。

https://github.com/umijs/tnf/blob/master/src/fishkit/server.ts#L56-L60

@sorrycc sorrycc closed this as completed Jan 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants