defaultProps太大 - 无法序列化
如果在渲染过程中遇到错误:
defaultProps太大 - 无法序列化 - 传递给具有ID“[composition-id]”的组合的defaultProps - 传递给defaultProps的对象太大。通过访问https://remotion.dev/docs/troubleshooting/serialize-defaultprops 了解如何解决此错误
defaultProps太大 - 无法序列化 - 传递给具有ID“[composition-id]”的组合的defaultProps - 传递给defaultProps的对象太大。通过访问https://remotion.dev/docs/troubleshooting/serialize-defaultprops 了解如何解决此错误
这意味着传递给指定组合的defaultProps
的对象太大,Chrome无法将其序列化为字符串。
如果看到此错误的变体:
defaultProps太大 - 无法序列化 - 传递给defaultProps的对象太大。通过访问https://remotion.dev/docs/troubleshooting/serialize-defaultprops 了解如何解决此错误
defaultProps太大 - 无法序列化 - 传递给defaultProps的对象太大。通过访问https://remotion.dev/docs/troubleshooting/serialize-defaultprops 了解如何解决此错误
defaultProps
并非太大,但整个组合列表太大而无法序列化。
为什么会出现此错误
Remotion正在尝试使用getCompositions()
获取组合列表,并将它们从无头浏览器复制到Node.JS中。在此操作期间,JavaScript对象需要转换为字符串。这个上限为256MB,但取决于Remotion运行的机器,错误也可能发生在较小的有效负载上。
如何修复错误
避免将巨大的数据有效负载传递给defaultProps
。而是基于精简的defaultProps
在组件内部派生大数据有效负载。例如:
- 不要传递表示资产的数据URL或缓冲区,而是传递资产的URL并从组合内部获取资产
- 不要使用
getAudioData()
获取音频可视化并将其作为默认props传递 - 而是传递音频资产的URL并在组件内部获取音频可视化。
这可能会导致问题,因为audioData
变量可能会变得非常大,因为它包含有关波形的原始数据,而Remotion需要将这些数据序列化为字符串,这样做很慢,可能会导致此错误。相反,传递音频URL,并在组件内部进行音频数据获取: