所以我有一个像这样的monorepo设置...
apps/
app1
app2
app3
packages/
components/
component1
component2
这些应用程序都可以正常运行的next.js应用程序,而组件包则发布在npm私有注册表上,并由webpack捆绑。
我遇到的问题是,我只能将组件包导入到componentDidMount中的下一个应用程序,即客户端。尝试导入组件服务器端会导致“窗口未定义”错误,该错误源于样式加载器Webpack加载器。
因此,当我删除任何sass导入和样式加载器时,我可以成功导入该软件包,但是显然我不能在组件中包括任何sass,这是一个问题。
有人知道我如何将软件包与sass捆绑在一起,然后成功地将其在服务器端导入到下一个应用程序中吗?
答案 0 :(得分:0)
我最终解决了这个问题...
我必须使用提取css块插件来构建组件包,以使css与js分离,从而消除了对样式加载器的需要,并留下了main.css(除了index.js之外) )在节点模块中。
然后我可以毫无问题地在服务器端导入组件,只需将package_name / dist /中的main.css文件作为我应用程序static / style.css的一部分包含进来即可。
>