【问题标题】:Next.js page's first paint is missing all stylesNext.js 页面的第一次绘制缺少所有样式
【发布时间】:2020-11-22 11:53:51
【问题描述】:

我正在使用 scss 来设置我的 next.js 应用程序的样式,但是我注意到当我通过 google chrome 中的网络选项卡预览第一次绘制时,所有样式都丢失了。

如您所见,该页面相当简单,并且不获取任何初始道具。我怀疑服务器由于某种原因没有在后端构建整个页面(包括样式)。

我的 next.config.js 设置是: const withStyles = require("@webdeb/next-styles");

  module.exports = withStyles({
  sass: true, // use .scss files
  modules: true, // style.(m|module).css & style.(m|module).scss for module files
  });

【问题讨论】:

    标签: node.js reactjs next.js server-side-rendering


    【解决方案1】:

    对于较新的 nextjs 版本,我认为您不再需要使用 withStyles 和类似的插件。

    仅全局样式

    你可以:

    • 安装sass
    • 安装您正在使用的任何 css 框架,并按照他们的说明将他们的 css / scss 文件包含在您的项目中
    • 如果它是一个简单的项目并且您在配置文件中的所有内容都是 css 配置内容,则可能会完全删除您的 next.config.js 文件。
    • 将你的scss文件直接导入你的js文件(例如import '../styles/app.scss'

    作用域 scss 样式

    • 似乎您可以保留next.config.js 文件,基于我通过谷歌搜索找到here 的这个解决方法:
    const withStyles = require('@webdeb/next-styles')
    
    module.exports = withStyles({
      sass: true, // use .scss files
      modules: true, // style.(m|module).css & style.(m|module).scss for module files
    })
    

    【讨论】:

    • 嗨,日元,所以我照你说的做了,并删除了next.config.js 文件。但是这样做之后我一直收到这个错误Global CSS cannot be imported from files other than your Custom <App>. Please move all global CSS imports to src/pages/_app.js. Or convert the import to Component-Level CSS (CSS Modules). 然后我将主页的所有组件特定的 scss 文件导入到 _app.js 但是问题仍然存在
    • @insivika 我根据搜索您描述的错误扩展了我的答案。一些文档here too
    • 我不确定这如何解决我的问题。我最初发布问题时的设置
    • 嘿@insivika,你能找到解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多