lblblong/tarojs-router-next

build:weapp 白屏

Opened this issue · 22 comments

依赖情况:

"dependencies": {
    "@antmjs/vantui": "^2.2.8",
    "@babel/runtime": "^7.7.7",
    "@reduxjs/toolkit": "^1.9.0",
    "@tarojs/components": "3.5.7",
    "@tarojs/helper": "3.5.7",
    "@tarojs/plugin-framework-react": "3.5.7",
    "@tarojs/plugin-html": "^3.5.7",
    "@tarojs/plugin-platform-alipay": "3.5.7",
    "@tarojs/plugin-platform-jd": "3.5.7",
    "@tarojs/plugin-platform-qq": "3.5.7",
    "@tarojs/plugin-platform-swan": "3.5.7",
    "@tarojs/plugin-platform-tt": "3.5.7",
    "@tarojs/plugin-platform-weapp": "3.5.7",
    "@tarojs/react": "3.5.7",
    "@tarojs/router": "3.5.7",
    "@tarojs/runtime": "3.5.7",
    "@tarojs/shared": "3.5.7",
    "@tarojs/taro": "3.5.7",
    "@tarojs/taro-h5": "3.5.7",
    "react": "^18.0.0",
    "react-dom": "^18.0.0",
    "react-redux": "^8.0.5",
    "redux": "^4.2.0",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.4.2",
    "tarojs-router-next": "^3.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.8.0",
    "@dcasia/mini-program-tailwind-webpack-plugin": "^1.5.6",
    "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5",
    "@tarojs/cli": "3.5.7",
    "@tarojs/plugin-react-devtools": "^3.5.7",
    "@tarojs/webpack5-runner": "3.5.7",
    "@types/react": "^18.0.0",
    "@types/webpack-env": "^1.13.6",
    "@typescript-eslint/eslint-plugin": "^5.20.0",
    "@typescript-eslint/parser": "^5.20.0",
    "babel-loader": "^9.1.0",
    "babel-plugin-import": "^1.13.5",
    "babel-preset-taro": "3.5.7",
    "cache-loader": "^4.1.0",
    "eslint": "^8.12.0",
    "eslint-config-taro": "3.5.7",
    "eslint-plugin-import": "^2.12.0",
    "eslint-plugin-react": "^7.8.2",
    "eslint-plugin-react-hooks": "^4.2.0",
    "react-refresh": "^0.11.0",
    "stylelint": "^14.4.0",
    "taro-plugin-compiler-optimization": "^1.0.4",
    "tarojs-router-next-plugin": "^3.2.0",
    "terser-webpack-plugin": "^5.3.6",
    "thread-loader": "^3.0.4",
    "typescript": "^4.1.0",
    "webpack": "5.69.0"
  }

dev:weapp 一切正常,build:weapp 的话,如果 注册了 middleware,页面不会报错,渲染出来只有一个 <page></page>,如果不注册 middleware 则正常

可以看看中间件的代码吗,第一个页面是不会走中间件的

可以看看中间件的代码吗,第一个页面是不会走中间件的

中间件代码就是文档的例子,无 condition,只打印 ctx

可以看看中间件的代码吗,第一个页面是不会走中间件的

中间件代码就是文档的例子,无 condition,只打印 ctx

最后 await next()

能弄个最小可复现的项目吗,不太确定是哪里的问题

能弄个最小可复现的项目吗,不太确定是哪里的问题

现在手边没电脑了 明天我看看

好的👌

好的👌

试了个demo都是正常的,可能是依赖冲突或者打包配置的问题,

经过排除目前发现问题很不固定,根据早上的排查做的最小 demo 也没出问题。

目前发现有影响的情况,暂时没分析出来问题在哪个环节:

  • 使用了 @antmjs/vantui,在不同 page 引用同一个组件时,页面渲染为空 page,去掉 middleware 正常,或 关闭 prebundle 也会正常;
  • 开启 prebundle,注册 middleware ,但引用 taro 官方的组件,不同 page 引用同一个组件也正常;

本以为问题出在配置上,结果最小 demo 尝试复现,使用了 @antmjs/vantui,在不同 page 引用同一个组件,页面渲染正常,添加 middleware 正常,打开 prebundle 也正常。

所以现在很懵...

会不会是ui库的问题,你试下这个:https://github.com/mallfoundry/taroify
也是 vant-ui 风格的一个实现

会不会是ui库的问题,你试下这个:https://github.com/mallfoundry/taroify
也是 vant-ui 风格的一个实现

我也想过,但是 demo 里它又是正常的 人已经晕了

demo里 tarojs-router-next 和 ui 库共存是正常的吗

demo里 tarojs-router-next 和 ui 库共存是正常的吗

是的

那把业务代码一点点的拷贝到 demo 里呢

那把业务代码一点点的拷贝到 demo 里呢

我之前那么试过,前面配置的时候都没问题,就是最后加新 page 共用组件的时候出问题了。demo 里面直接公用是没问题的。会不会是 taro 的智能分包

你有配置分包吗

你有配置分包吗

没有配置分包,只开了 taro 的智能分包,mini.optimizeMainPackage.enable

https://docs.taro.zone/docs/mini-split-chunks-plugin

那有没有关闭这个智能分包试一下呢

那有没有关闭这个智能分包试一下呢

之前关闭了也没有效果,然后关闭 prebundle 删掉 dist/,好像又好了,后面继续用的时候 dev 完再 build 又不行了,我本来以为是一个地方的问题,然后一点一点改,最后好像什么都会影响它

你说的共用组件是在不同页面使用了自己封装的组件,还是说不同页面使用了相同的 UI 库导出的组件

你说的共用组件是在不同页面使用了自己封装的组件,还是说不同页面使用了相同的 UI 库导出的组件

引用同一个自己封装的组件,也引用了同一个 ui 库里导出的组件。删掉其他页面被导入过的同一个 ui 库的组件他就会正常

会不会是产生了循环依赖

是否有用mp-html ? 我印象中用旧版会build白屏, 和你说的情况类似(随机出现)