uni-app编译运行到iOS时 pages.json中pages节点第一项非应用入口页 但强制pages/index/index为入口页

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app编译运行到iOS时 pages.json中pages节点第一项非应用入口页 但强制pages/index/index为入口页

示例代码:

{
    "pages": [
        {
            "path": "pages/guide/guide",
            "style": {
                "navigationBarTitleText": "uni-app",
                "navigationStyle": "custom",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/index/index",
            "style": {
                "navigationBarTitleText": "主页",
                "navigationStyle": "custom",
                "enablePullDownRefresh": false,
                "backgroundColor": "#313055",
                "backgroundColorBottom": "#EAE4F3",
                "disableScroll": true
            }
        }
    ]
}

操作步骤:

尝试设置pages第一个节点pages/guide/guide作为应用入口页,编译运行到App - iOS依然打开的入口页是pages/index/index,更名或者删除pages/index/index节点后重新运行白屏。

预期结果:

pages节点的第一项为应用入口页(即首页)

实际结果:

pages节点的第一项不是应用入口页(即首页),pages/index/index不论放在哪个节点位置都强制成为了入口页

bug描述:

uniapp编译运行到iOS时,在pages.json中pages节点的第一项不是应用入口页,强制pages/index/index成为了入口页,如果删掉pages/index/index后编译会进入白屏页面。

尝试过通过自定义基座或者标准基座都是同样的问题,而且修改pages.json后必须重新运行才能生效。


3 回复

没有发现这个问题,下面是运行结果截图,并且附带测试项目,您看一下,要是还有问题,您复现之后再发一下


确实 极简项目包没有复现这个问题,但是在实际项目中依然还能复现。等后面有空我在测试项目中加入uniCloud/push等等用到的模块,看看能不能再复现出来。

在uni-app项目中,pages.json 文件用于配置应用的页面路由、导航条、选项卡等页面级信息。当你希望编译运行到iOS平台时,如果pages.jsonpages 节点的第一项不是应用的实际入口页,但系统却强制以 pages/index/index 作为入口页,这通常是因为配置问题或者平台特定的行为。

为了确保你的应用按照预期启动到指定的页面,你需要检查并正确配置 pages.json 文件中的 launch 节点以及 pages 节点的顺序和内容。以下是一个示例配置,其中我们将 pages/home/home 设置为应用的入口页,而不是 pages/index/index

{
  "pages": [
    {
      "path": "pages/home/home",
      "style": {
        "navigationBarTitleText": "Home"
      }
    },
    {
      "path": "pages/index/index",
      "style": {
        "navigationBarTitleText": "Index"
      }
    },
    // 其他页面配置...
  ],
  "globalStyle": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "App Name",
    "navigationBarBackgroundColor": "#FFFFFF",
    "backgroundColor": "#EEEEEE"
  },
  "tabBar": {
    "color": "#7A7E83",
    "selectedColor": "#3cc51f",
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "Home",
        "iconPath": "static/tabbar/home.png",
        "selectedIconPath": "static/tabbar/home-active.png"
      },
      {
        "pagePath": "pages/index/index",
        "text": "Index",
        "iconPath": "static/tabbar/index.png",
        "selectedIconPath": "static/tabbar/index-active.png"
      }
      // 其他tab项...
    ]
  },
  "launch": {
    "path": "pages/home/home", // 设置应用启动时加载的页面路径
    "query": {} // 启动参数,可以在页面onLoad函数中获取
  }
}

在上述配置中,launch 节点的 path 属性被设置为 "pages/home/home",这确保了应用在启动时加载的是 home 页面而不是 index 页面。同时,注意 pages 数组中的顺序并不影响启动页,启动页是由 launch 节点决定的。

确保你的 pages.json 配置正确无误后,重新编译并运行你的uni-app项目到iOS平台,应用应该会按照你的配置启动到指定的 home 页面。如果问题依旧存在,检查是否有其他配置文件或代码影响了启动流程。

回到顶部