【发布时间】:2021-12-21 11:19:38
【问题描述】:
我遇到了一个问题,即从与 webpack 5 捆绑的组件库中导入的组件样式在 ssr 期间未应用。
我有两个项目。
带有 SC 的 NextJs 应用。导入组件库:
带有 SC 并与 webpack 5 捆绑在一起的 React 组件库。导入到我的 NextJs 应用程序中:
组件库被添加为 NextJs 应用程序的依赖项。 一旦页面在客户端更新,样式就会正确应用,只是页面的初始渲染缺少样式。
我不知道是 SC 还是 NextJs 的问题。但是,如果我不将组件库与 webpack 捆绑,而是仅使用此配置与 babel 进行转译:
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins":
[
"babel-plugin-styled-components"
]
}
然后 NextJs 执行 ssr 并应用样式。
我已经建立了一个最小的repo repo,这样任何人都可以测试这个问题,下面是编译组件库的命令。随意将您的更改推送到我提供的存储库中。
要捆绑组件库,请运行 npm run build 命令并将 package.json 中的 main 设置为:
"main": "./dist/index.js"
要使用 babel 进行编译,请运行 npm run transpile 命令并将 package.json 中的 main 设置为:
"main": "./dist/index.transpiled.js"
如果我没有提供足够的信息来解决此问题,请告诉我,我会将其添加到帖子中。
编辑:
在下面的屏幕截图中,您可以看到两个组件。顶部在 next.js 应用程序中定义并使用样式呈现。底部是从组件库导入的,在服务端渲染时缺少样式。
【问题讨论】:
-
“初始渲染”是什么意思?
-
我的意思是在服务器端渲染,从 next.js 服务器提供的页面。
-
问题是当你使用 webpack 编译时你没有使用
babel-plugin-styled-components插件正确编译? -
@juliomalves 可能是这样,因为正如我上面所说,当我使用带有
babel-plugin-styled-components插件的 babel 进行编译时,它工作正常。只有当我使用 webpack 编译整个东西时,才会出现这个问题。我将如何继续确定问题是否确实与将babel-plugin-styled-components与 webpack 一起使用?
标签: reactjs next.js babeljs styled-components webpack-5