zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.61k stars 284 forks source link

渲染的数据量多就会报错state undefined的情况 #330

Closed xiaokyo closed 4 months ago

xiaokyo commented 5 months ago

提问前请确认以下几点信息,否则你的问题将不会被解答

详细描述你的问题

组件CommentRow是路由首页的一个组件, 访问首页时, new Array(3), 3以下不会有报错, 渲染的jsx多了, 就会报如下错误, 定位不到问题, 来问问有没有碰到类似问题

image

期望的结果

不报错

当前使用的版本

不要贴 package.json 用 yarn list "ssr*" 来查看版本。同时建议熟读semver 规则并且知道怎么安装最新依赖! ├─ ssr-common-utils@6.2.130 ├─ ssr-core@6.2.29 ├─ ssr-deepclone@1.0.1 ├─ ssr-hoc-react@6.2.11 ├─ ssr-mini-css-extract-plugin@1.6.3 ├─ ssr-plugin-midway@6.2.23 ├─ ssr-plugin-react@6.2.77 │ └─ ssri@7.1.1 ├─ ssr-serialize-javascript@6.0.4 ├─ ssr-types@6.2.55 ├─ ssr-vite-plugin-style-import@2.0.1 ├─ ssr-webpack@6.2.16 ├─ ssr-webpack4@4.46.2 ├─ ssr-window@3.0.0 ├─ ssr@6.2.71 └─ ssri@6.0.2

复现仓库地址

暂时没仓库

你本人对问题可能的原因判断(如果你能大概判断的话)

应该是哪块state未使用正确, 用的是valtio状态管理 react + midwayjs

image
zhangyuang commented 5 months ago

业务代码的错误没有复现无法定位,可以自行打console.log来debug

xiaokyo commented 4 months ago

业务代码的错误没有复现无法定位,可以自行打console.log来debug

尝试过了, fetch都是正常过, render渲染也是正常, 就是报错, 然后js打包失败好像, 浏览器访问不了js 而且我注释了commomState这个state, 他会接着报错其他的一个state

xiaokyo commented 4 months ago

框架内部的useStore是不是不能在子组件多次调用

xiaokyo commented 4 months ago

我把state全部放在render处统一去拿就不会报错 在子组件里多次调用, 且state数据量大的情况就会报错

zhangyuang commented 4 months ago

能否尝试用默认的example给一个最简复现

xiaokyo commented 4 months ago

我晚点看看怎么最小复现项目, 有可能就是我使用的哪里有问题

xiaokyo commented 4 months ago

ykfe-midway-react.zip

能否尝试用默认的example给一个最简复现

用的官方例子复现的, 访问首页时node会报错, 有空的时候可以帮忙看看

zhangyuang commented 4 months ago

排查到是当前返回的请求size超过了默认的stream请求限制,可以在调用render方法时修改为返回string类型的结果,或者下个版本提供参数可以设置默认的stream缓冲区大小

zhangyuang commented 4 months ago

plugin-react>=6.2.78支持config.streamHighWaterMark参考最新文档

xiaokyo commented 4 months ago

好的, 谢谢啦

xiaokyo commented 4 months ago

还有, 我能问一下您是如何排查问题的吗, 根据这个问题报错其实我联想不到node stream流缓存大小的问题

zhangyuang commented 4 months ago

通过 curl 命令检测到返回的 html 内容被截断来控制变量排除原因

xiaokyo commented 4 months ago

通过 curl 命令检测到返回的 html 内容被截断来控制变量排除原因

好的, 感谢