使用webpack样式加载器捆绑的软件包与SSR不兼容,因此无法导入Next.js

时间:2018-09-04 23:16:50

标签: webpack sass webpack-style-loader next.js ssr

所以我有一个像这样的monorepo设置...

apps/

  app1

  app2

  app3

packages/

  components/

    component1

    component2

这些应用程序都可以正常运行的next.js应用程序,而组件包则发布在npm私有注册表上,并由webpack捆绑。

我遇到的问题是,我只能将组件包导入到componentDidMount中的下一个应用程序,即客户端。尝试导入组件服务器端会导致“窗口未定义”错误,该错误源于样式加载器Webpack加载器。

因此,当我删除任何sass导入和样式加载器时,我可以成功导入该软件包,但是显然我不能在组件中包括任何sass,这是一个问题。

有人知道我如何将软件包与sass捆绑在一起,然后成功地将其在服务器端导入到下一个应用程序中吗?

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题...

我必须使用提取css块插件来构建组件包,以使css与js分离,从而消除了对样式加载器的需要,并留下了main.css(除了index.js之外) )在节点模块中。

然后我可以毫无问题地在服务器端导入组件,只需将package_name / dist /中的main.css文件作为我应用程序static / style.css的一部分包含进来即可。

>