React native 世博会构建网页路径

React native 世博会构建网页路径,react-native,expo,react-navigation,React Native,Expo,React Navigation,我和世博会做了一个项目 它工作得很好,我很高兴,但现在我需要直接访问子页面(例如) 在App.js中,我做了以下几点: ... const linking = { prefixes: ['https:/example.com'], config: { screens: { Home: '', Backoffice: '/backoffice', } }, }; return ( <Naviga

我和世博会做了一个项目

它工作得很好,我很高兴,但现在我需要直接访问子页面(例如)

在App.js中,我做了以下几点:

...
const linking = {
    prefixes: ['https:/example.com'],
    config: {
      screens: {
        Home: '',
        Backoffice: '/backoffice',
      }
    },
  };

  return (
    <NavigationContainer linking={linking}>
...
。。。
常量链接={
前缀:['https:/example.com'],
配置:{
屏幕:{
家:'',
后台办公室:'/Backoffice',
}
},
};
返回(
...
如果我在开发模式下执行代码,并将站点调用到:19006端口,我可以直接访问子页面


如果我在
expo build:web
npx-serve-web build
之后执行代码,我将无法访问子页面(我收到一个404未找到).

既然您使用的是serve,那么您需要一个
serve.json
来处理重定向。Expo通过
Expo build:web
自动生成
serve.json
,但它不包括任何重定向代码。您可以在
app.json
中添加一个设置来自动生成重定向代码,但我看不到文档中的任何内容。(希望有人能在这里启发我)

假设这是一个带有
index.html
的单页web应用程序,在构建web应用程序后,您需要在
service.json
中添加以下内容:

{
  ...
  "rewrites": [
    { "source": "/*", "destination": "/index.html" }
  ]
}
这种方法并不理想,因为每次构建web应用时都必须这样做,但至少它应该允许您在本地运行构建时访问子页面

例如,如果要在Netlify上部署,则需要添加一个
\u重定向
文件。我将我的
\u重定向
文件放在我的项目根目录中名为
web
(即
web/\u重定向
)您可以在Netlify文档中找到有关重定向文件的更多信息,但该文件应如下所示:

/*    /index.html   200
创建此文件后,如果运行
expo build:web
,您应该可以在
web build
目录中看到它。这应该允许您将其作为单页web应用程序部署到Netlify上