Next.js 没有服务器端渲染功能的导入模块

Next.js 没有服务器端渲染功能的导入模块,next.js,surveyjs,Next.js,Surveyjs,我对Next.js有问题。当我尝试导入节点模块时, 模块使用窗口对象,Next.js抛出错误:窗口未定义 模块的导入方式如下所示: const MyComponent= dynamic( () => import('../components/hello3'), { ssr: false } ) <MyComponent/> import*作为“调查小部件”中的小部件; widgets.autocomplete(调查); 我猜Next.js动态导入在我的情况下不起作用

我对Next.js有问题。当我尝试导入节点模块时, 模块使用
窗口
对象,Next.js抛出错误:
窗口未定义

模块的导入方式如下所示:

const MyComponent= dynamic(
() => import('../components/hello3'),
  { ssr: false }
)
<MyComponent/>
import*作为“调查小部件”中的小部件;
widgets.autocomplete(调查);

我猜Next.js动态导入在我的情况下不起作用。有什么办法吗?

尝试推迟使用
窗口的所有代码,或
useffect
中限制为浏览器的任何其他
api
,因为
useffect
中的代码只在浏览器中运行

如果你不能做到这一点,那么制作一个
intermediate
模块,用于导入
调查小部件
并重新导出你需要的内容。因此,最后,您将动态导入
中介
模块

import*作为“调查小部件”中的小部件
导出默认窗口小部件

对于任何想要解决这个问题的人,我都用

我所做的是使用动态导入导入顶级组件,如下所示:

const MyComponent= dynamic(
() => import('../components/hello3'),
  { ssr: false }
)
<MyComponent/>
因此,
hello3
组件将不再用于服务器端渲染,而是在客户端渲染

那么就这样使用它:

const MyComponent= dynamic(
() => import('../components/hello3'),
  { ssr: false }
)
<MyComponent/>