tou*_*ear 4 npm reactjs next.js
错误描述 我正在 NextJS 中使用来自 Brainhubeu 的名为 React-carousel 的库。即使当我使用 ssr:false 动态导入时,构建 UI 看起来很奇怪,但开发 UI 完全没问题。
开发用户界面 -

我也在 Codesandbox 中重新创建了它(这个用于正在运行的开发环境npm run dev)-
https://codesandbox.io/embed/suspicious-volhard-460q8?fontsize=14&hidenavigation=1&theme=dark
npm run build但是,当我构建它然后使用&&运行构建时 npm run start-

要在codesandbox中重新创建它 -
预期的行为 UI 应与使用 npm run dev 时看到的相同。
问题
为什么我的开发 UI 工作正常,但当我构建和提供服务时,UI 很奇怪。NextJS 上下文中 npm run dev 和 npm run build && npm run start 之间到底有什么区别?
有什么办法解决这个问题吗?
我的尝试
我一直在尝试解决这个问题,并在 NextJS 的官方 Github 讨论中提出了这个问题。找不到任何答案。
我什至在react-carousel的Github上创建了一个Github Bug问题,他们也帮不上什么忙。
感谢您的帮助。
我能够解决这个问题。就我而言,这是由于我的设置(开发)和下一个构建&&下一个启动方式之间的差异所致。请注意一些事项以进行排序 -
如果您使用了外部库,它很可能不支持服务器端渲染。我正在使用 Brainhubeu 的 React-carousel,但它遇到了一些问题。通过使用ssr:false 选项的 next/dynamic 导入来导入库来解决这个问题。
另一个问题是我正在使用/遵循过时的 Tailwind 和 NextJS 样板代码。因此 postcss.config.js 的配置方式很容易出错。问题的关键就在这里。至少对我来说 -在开发期间,一切工作正常,因为 postcss 没有清除我导入的任何第三方插件/库的类,但是,当我执行 npm run build 和 npm run start 时,它们被清除
现在让我们快速看看您如何解决这个问题 -
使用 TailwindCSS 提供的内置清除选项。为此,请使用 NextJS 团队的官方起始代码/样板代码。正如他们在那里提到的 - 为了控制生成的样式表的文件大小,此示例使用 Tailwind CSS 的清除选项来删除未使用的 CSS。
或者,如果您不想走以前的路,您可以尝试修复问题。如果您几乎完成了该项目并且只想使其正常工作,我只会建议您使用此方法,因为这绝不是一个好的解决方案。您必须将一堆 css 文件列入白名单,以免被清除。这就是我所做的,但你也可以将丢失的更多 CSS 类列入白名单 -
// postcss.config.js
const purgecss = [
"@fullhuman/postcss-purgecss",
{
content: [
"./node_modules/@brainhubeu/react-carousel/lib/style.css",
"./node_modules/@brainhubeu/react-carousel/lib/style.css.map",
"./node_modules/react-toastify/dist/*.css",
"./components/**/*.js",
"./pages/**/*.js",
],
defaultExtractor: (content) => {
const broadMatches = content.match(/[^<>"'`\s]*[^<>"'`\s:]/g) || [];
const innerMatches = content.match(/[^<>"'`\s.()]*[^<>"'`\s.():]/g) || [];
return broadMatches.concat(innerMatches);
},
},
];
module.exports = {
plugins: [
"postcss-import",
"tailwindcss",
"autoprefixer",
...(process.env.NODE_ENV === "production" ? [purgecss] : []),
],
};
Run Code Online (Sandbox Code Playgroud)
不过我还是建议采用第一种方法,将代码从旧存储库复制到新存储库,使用 SSR:false 来使用讨厌 SSR 的客户端库,这样就可以了。
如果您需要这方面的帮助,可以联系我的 Twitter @toughyear 。
| 归档时间: |
|
| 查看次数: |
4772 次 |
| 最近记录: |