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
那有没有关闭这个智能分包试一下呢
那有没有关闭这个智能分包试一下呢
之前关闭了也没有效果,然后关闭 prebundle
删掉 dist/
,好像又好了,后面继续用的时候 dev 完再 build 又不行了,我本来以为是一个地方的问题,然后一点一点改,最后好像什么都会影响它
你说的共用组件是在不同页面使用了自己封装的组件,还是说不同页面使用了相同的 UI 库导出的组件
你说的共用组件是在不同页面使用了自己封装的组件,还是说不同页面使用了相同的 UI 库导出的组件
引用同一个自己封装的组件,也引用了同一个 ui 库里导出的组件。删掉其他页面被导入过的同一个 ui 库的组件他就会正常
会不会是产生了循环依赖
是否有用mp-html ? 我印象中用旧版会build白屏, 和你说的情况类似(随机出现)