Next.js 纱线构建因 plotly.js 失败(发生构建错误 ReferenceError: self is not defined)

Posted

技术标签:

【中文标题】Next.js 纱线构建因 plotly.js 失败(发生构建错误 ReferenceError: self is not defined)【英文标题】:Next.js yarn build failed due to plotly.js (Build error occurred ReferenceError: self is not defined) 【发布时间】:2021-12-02 02:35:33 【问题描述】:

当我尝试使用 yarn build 命令构建用于生产的 Next.js 应用程序时出现以下错误。但它在开发服务器中运行良好(使用yarn dev 命令时)。我正在使用 react-plotly.js 库在此反应应用程序中生成绘图图。

react-plotly 库的使用:

import Plot from 'react-plotly.js';

return(
  <>
   <Plot data=[data] layout=layout />
  </>
)

这是错误:

> Build error occurred
ReferenceError: self is not defined

我已经研究了 plotly.js git 存储库和谷歌类似的问题,但似乎没有结果。知道 Next.js 纱线构建失败的原因吗?

【问题讨论】:

【参考方案1】:

Next Js 使用服务器端渲染,并且在本地开发时仍然模拟 s-s-r,因此许多依赖于原生对象(通常是窗口对象)的库无法按预期工作。

https://github.com/plotly/react-plotly.js/issues/40

似乎 plotly 不适用于 s-s-r 但还有另一个组件应该 https://github.com/aulneau/next.js-with-react-plotly.js

【讨论】:

感谢您的解决方案。没有 s-s-r 的动态导入对我有用。你节省了我的时间。

以上是关于Next.js 纱线构建因 plotly.js 失败(发生构建错误 ReferenceError: self is not defined)的主要内容,如果未能解决你的问题,请参考以下文章

减少 Plotly.js 库的大小

Firebase 推送通知在纱线手表中工作,但在纱线构建中不工作

JHipster - 纱线构建失败

纱线构建不工作,构建失败,因为进程退出太早

如何构建 next.js 生产?

esbuild 上的纱线构建失败