没有出现 mobx warning 的话需要重写生成模块的代码吗
来源:3-8 服务端问题解决mobx的warning以及增加title等SEO友好标签

ApOLO
2018-09-13
如题所示.
在我的开发环境中并没有出现 multiple mobx instances 的的信息. 但是如果在 webpack 服务器打包配置中定义了 external, 就会遇到 react is not defined 的异常.
问题1
那么问题来了, 如果没有出现multiple mobx instances warning
的话我需要重写生成模块的代码吗?
问题2: webpack 打包配置中 external 的必要性
定义了 webpack 打包配置中的 external 后, 可以减小 server-entry bundle 的体积, 但是renderToString 的结果是 react 组件的输出 markup , 那么实际 http 传输过程中的数据大小会有变化吗?
问题3: 为什么会出现 react is not defined
最后的问题是为什么会遇到 react is not defined 的问题呢?
之所以有这个疑问是因为我之前写了一个 react & react router 4 SSR 的 demo 点击这里查看, 同样的设置了 webpack 打包配置的 external 选项, 但是并没有遇到这个异常.
2回答
-
ApOLO
提问者
2018-09-17
虽然我在使用 mobx 5 的时候并没有遇到这个问题, 但还是自问自答一下吧.
出现 There are multiple mobx instances actives 的原因:
简而言之, 是由于错误的 import 方式和项目 dependencies 设置导致的, 当具有嵌套/引用关系的 模块各自创建了 observer 组件, 而每个模块各自创建了 mobx 实例.
解决办法
Don't import from "mobx/lib/something"
配置项目依赖, 让子组件使用同一个 mobx 来管理 observer 和 observables
00 -
Jokcy
2018-09-14
你有配置webpack打包的模式是`node`么?还有就是`libiaryTarget`是`commonjs2`,因为是在服务端运行的,只需要打包成node的包模式就行,不需要跟运行在浏览器端一样把所有内容打包成一个文件,而且可以使用node包加载器的缓存,提高效率。
00
相似问题
回答 1