Skip to main content

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,并在组件内部进行音频数据获取:

另请参阅