NextJS 在生产构建中 CSS 顺序错误

2024-06-30

我从本地文件和节点模块导入 CSS 文件:

//> Global Styling
// Local
import "../styles/globals.scss";
// Icons
import "@fortawesome/fontawesome-free/css/all.min.css";
// Bootstrap
import "bootstrap-css-only/css/bootstrap.min.css";
// Material Design for Bootstrap
import "mdbreact/dist/css/mdb.css";

这在我的本地开发版本上按预期工作。所有样式都按其应有的样子显示。

正如您在这里所看到的,本地和生产的样式是不同的。 (看看字体和按钮)

Development left, Production right (Development left, Production right)

My next.config.js is:

//#region > Imports
const withSass = require("@zeit/next-sass");
const withCSS = require("@zeit/next-css");
const withFonts = require("next-fonts");
const withImages = require("next-images");
const withPlugins = require("next-compose-plugins");
//#endregion

//#region > Exports
module.exports = [
  withSass({
    webpack(config, options) {
      config.module.rules.push({
        test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
        use: {
          loader: "url-loader",
          options: {
            limit: 100000,
          },
        },
      });

      return config;
    },
  }),
  withPlugins([withCSS, withFonts, withImages]),
];
//#endregion

/**
 * SPDX-License-Identifier: (EUPL-1.2)
 * Copyright © 2020 InspireMedia GmbH
 */

似乎 MDB 样式在构建应用程序时被引导程序覆盖。我使用以下方式部署我的应用程序next build && next export && firebase deploy并使用./out部署源的文件夹。

您可以在这里找到代码:https://github.com/aichner/nextjs-redux-template https://github.com/aichner/nextjs-redux-template/tree/add-basics-aa1


如果问题是样式不正确。 (当您使用material-ui时):

  1. Create _document.js在pages目录下。
  2. 使用以下代码填充文件:
import React from "react";
import Document, { Html, Head, Main, NextScript } from "next/document";
import { ServerStyleSheets } from "@material-ui/styles"; // works with @material-ui/core/styles, if you prefer to use it.
import theme from "../Theme"; // change this theme path as per your project

export default class MyDocument extends Document {
  render() {
    return (
      <Html lang="en">
        <Head>
          {/* Not exactly required, but this is the PWA primary color */}
          <meta name="theme-color" content={theme.palette.primary.main} />
        </Head>
        <body>
          <Main />
          <NextScript />
        </body>
      </Html>
    );
  }
}

// `getInitialProps` belongs to `_document` (instead of `_app`),
// it's compatible with server-side generation (SSG).
MyDocument.getInitialProps = async (ctx) => {
  // Resolution order
  //
  // On the server:
  // 1. app.getInitialProps
  // 2. page.getInitialProps
  // 3. document.getInitialProps
  // 4. app.render
  // 5. page.render
  // 6. document.render
  //
  // On the server with error:
  // 1. document.getInitialProps
  // 2. app.render
  // 3. page.render
  // 4. document.render
  //
  // On the client
  // 1. app.getInitialProps
  // 2. page.getInitialProps
  // 3. app.render
  // 4. page.render

  // Render app and page and get the context of the page with collected side effects.
  const sheets = new ServerStyleSheets();
  const originalRenderPage = ctx.renderPage;

  ctx.renderPage = () =>
    originalRenderPage({
      enhanceApp: (App) => (props) => sheets.collect(<App {...props} />),
    });

  const initialProps = await Document.getInitialProps(ctx);

  return {
    ...initialProps,
    // Styles fragment is rendered after the app and page rendering finish.
    styles: [
      ...React.Children.toArray(initialProps.styles),
      sheets.getStyleElement(),
    ],
  };
};

Reason :Material UI 使用幕后上下文来应用其样式。由于 NextJs 服务器端渲染,此上下文将会丢失。因此,我们需要告诉 Next 使用之前的上下文。上面的代码就是这样做的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NextJS 在生产构建中 CSS 顺序错误 的相关文章

  • 我可以在 javascript 中使用 php 吗?

    初学者的问题 我可以在 JavaScript 中使用 PHP 吗 例如在 jquery 中 triggers eq 1 post PHP 在服务器端执行 JavaScript 在客户端执行 但是你可以像这样打印 PHP 变量 trigger
  • Yepnope 和 Modernizr screen.width 条件

    我正在尝试 本地 使用 Yepnope 和 Modernizr 来加载 CSS 和 JS 文件 这样我就可以更好地管理文件并轻松编码 这是当前的布局 Modernizr load test Modernizr mq all and max
  • 异步等待和获取语法在 React 中不起作用

    这是我的代码 export class App extends Component constructor props super props async fetchSport sport let headers new Headers h
  • 点击超链接时调用 javascript 函数

    我正在 ASP NET 的 C 代码隐藏文件中动态创建超链接 我需要在客户端点击时调用 JavaScript 函数 我该如何做到这一点 仍然更整洁 而不是typical href or href javascript void or hre
  • 在 Bootstrap 中的悬停中打开折叠选项卡

    我在 Bootstrap 中有折叠面板 单击选项卡标题即可打开该面板 我试图弄清楚如何使用鼠标悬停在选项卡的总宽度上来打开 但我没有得到它 下面是默认关闭的单个选项卡的代码 div class panel panel default sty
  • 获取 ES6 符号的描述

    我想知道是否有一种很好的方法来获取符号的描述 例如 var s Symbol 5 toString 的默认实现将简单地打印 符号 5 我想找到一种方法来提取实际描述 即 5 Symbol description https develope
  • React Native 上无法识别的字体系列

    我在使用 React Native 时遇到了一个特殊的错误 在我的里面button js我在做 import Icon from react native vector icons MaterialIcons const icon Icon
  • javascript 检查 json 中是否为 null

    我使用以下 JavaScript 它写得很好 直到得到没有值的结果 在控制台日志中它显示了这一点 未捕获的类型错误 无法读取 null 的属性 文本 但我下面的脚本似乎不起作用 var checkCaption photo caption
  • 在 location.reload() 之后保持滚动位置

    我使用ajax 来更新所选的照片 如果成功 则刷新页面 用户可以看到所选的图像 它将有一个CSS边框 但当页面刷新时 位置又会回到顶部 我想知道重载后如何保持位置 我搜索了很多网站 仍然无法得到它 请指导我一下谢谢 EDIT 我在这里找到了
  • 引导崩溃仅切换一次

    我再次在这里拉扯我的头发 所以我已经使用 jsFiddle 进行了引导崩溃 http jsfiddle net rasreye xtPtH 1 http jsfiddle net rasreye xtPtH 1 但是当我添加到我的网站时 它
  • 检测 Javascript 内存泄漏并优化代码

    与 xdebug webgrind 类似 它为我们提供了文件等中每个函数的大致执行时间 我想知道如何进行优化以及检测缓慢的 javascript 函数 我确信萤火虫可能可以做到这一点 但我不确定如何做到 有人可以指导我如何检测内存泄漏吗 如
  • 在 1 级深度上翻转键值对

    我有对象 const pairs A D 1 2 3 B D 3 2 1 C D 4 3 2 1 B 0 1 2 3 我怎样才能让它翻转 const fliped D A 1 2 3 B 3 2 1 C 4 3 2 1 B C 0 1 2
  • 如何从javascript中的base 64字符串获取图像文件大小? [复制]

    这个问题在这里已经有答案了 我有图像的 Base64 数据 data image png base64 iVBORw0KGgoAAAANSUhEUgAAAOcAAABnCAYAAAD7RFX4AAAACXBIWXMAAAsTAAALEwEA
  • 点运算符不获取 Mongoose Document 对象的子属性

    console log gt gt gt gt gt gt user user outputs gt gt gt gt gt gt user username user1 salt 3303187e50a64889b41a7a1c66d3d
  • 邪恶的 Firefox 错误——“底层对象不支持参数或操作”

    我想弄清楚这里发生了什么事 我已经研究了几个小时了 似乎无法理解为什么会发生这种情况 我正在进行一些 AJAX 调用 但仅在 Mac OS X 上的 Firefox 版本 21 中不断收到此错误 这是错误 Exception A param
  • Tensorflow.js 与 React-Native

    我知道tensor flow js是一个以网络为中心的库 但出于好奇 我也在react native上尝试了它 它有点有效 它仅适用于调试模式 并在调试模式关闭时抛出错误 错误说窗口 位置 搜索不是一个对象 经过一些研究 我发现窗口对象是在
  • Aurelia.io:如何导航到路线

    我有一个包含配置路由的 router js 文件 路线 js export class App configureRouter config router config title Aurelia config map route welc
  • Javascript 日期时间字符串转 UTC 日期时间和 UTC 转本地日期时间

    我需要将字符串转换为 UTC 日期 然后将 UTC 日期转换为本地日期 这是我的代码 var dateStr 9 8 2015 12 44 00 PM console log strtoUTCtoLocal dateStr function
  • 在 Javascript 中解析 xml 并遍历子节点

    我需要用 javascript 解析下面的 xml
  • 当没有电子邮件客户端时,“mailto:”会做什么?

    我正在开发一个网站 什么是mailto 如果没有电子邮件客户端 如 Outlook Thunderbird 等 如何打开 它可以在我的电脑上运行 该电脑装有 Outlook 但如果有人想要怎么办 mailto 例如 在 gmail com

随机推荐

  • Union-Type 变为 Intersection-Type

    Problem 我想创建一个工厂 根据给定的参数提供不同的功能 这可以通过条件类型来解决 type DispatchConditional
  • 来自 bash 脚本的操作系统系统调用

    是否可以调用操作系统系统调用open close来自 shell 脚本的等 我尝试过谷歌搜索 但它让我走向了错误的使用方向system 命令 有人可以帮忙解决这个问题吗 许多系统调用都是可以访问的 但只能通过本机 shell 机制访问 而不
  • 两个 div 之间的垂直线间隔

    所以我有两个div 一个左侧 div 包含导航链接 另一个右侧 div 填充内容 具体取决于您在左侧单击的链接 我希望在导航和内容之间有一条垂直的灰线将两者分开 但我需要它根据右侧内容 div 的长度来改变高度 如果右侧没有导航那么长 则默
  • Struts 2 文件上传拦截器配置问题

    当尝试在我的应用程序中配置 Struts 2 文件上传拦截器时 我遇到两个问题 我想更改参数maximumSize 默认值是2 MB 我需要它是5 MB 和消息资源struts messages error file too large 应
  • 在javascript中使用正则表达式从字符串中提取子字符串

    我是 javascript 新手 如何提取与 javascript 字符串中的正则表达式匹配的子字符串 例如在Python中 version regex re compile r d d d line 2021 05 29 Version
  • 使用 Celery 用参数初始化工作线程

    我在寻找对我来说似乎相对简单的东西时遇到了问题 我正在使用 Celery 3 1 和 Python 3 并且希望使用参数初始化我的工作人员 以便他们可以使用这些详细信息进行设置 具体来说 这些工作人员将执行需要使用身份验证凭据与第三方 AP
  • 套接字编程指针错误

    我正在尝试学习一些套接字编程 我对 c 也很陌生 并且在创建服务器时遇到了一些问题 我在指针方面遇到问题 当我尝试运行代码时出现的错误是 警告 将 int 传递给 socklen t 类型的参数 又名 unsigned int 会在指针之间
  • PHP 如果找到特定值范围,则从主数组中删除子数组

    假设我有以下数组 9 gt Array 0 gt Bob Smith 1 gt email protected cdn cgi l email protection 2 gt Helsinki 3 gt 10 4 gt 34 5 gt 20
  • 如何开始编写代码覆盖率工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找实际讨论的书籍或其他参考资料how用Java编写代码覆盖率工具 一些不同的技术或技巧 源代码与字节
  • MySQL + htaccess mod_rewrite?

    我正在将类似代理的短域与我的网站结合使用 短域名是 hrci me 长域名是reachchallenges infectionist com hrci me 使用 mod rewrite 并有一个规则 几乎可以从 hrci me 到reac
  • 将带有任意特殊字符的多行字符串插入到 shell 脚本中的模板文件中

    就像是 cat template txt ruby e puts STDIN read sub placeholder IO read content txt gt output txt Or ed template txt lt
  • 允许方法签名中存在子类型的特征

    如何在继承特征中定义的方法中强制执行子类型 我要在 中放置什么 以下 trait Organism def reproduce org Bool class Amoeba extends Organism def reproduce org
  • 创建具有固定数量元素(长度)的范围

    在Python中 如何在具有固定数量元素的范围内创建列表 而不是每个元素之间的固定步长 gt gt gt Creating a range with a fixed step between elements is easy gt gt g
  • 如何使用 NSMutableArray 中的数据通过 NSUserDefaults 保存数据

    My NSMutableArray在我的 h 文件中声明如下 property strong nonatomic NSMutableArray numbers 如何使用 NSMutableArray 保存输入的数据以保存到NSUserDef
  • 在“使用 Apple 登录 - Apple ID 配置”中禁用“作为主要 App ID 启用”选项

    我正在尝试将 使用 Apple 登录 添加到我现有的应用程序 ID 中 检查启用它的选项后 显示以下弹出窗口 带有以下消息 如果您是首次启用应用程序 ID 或为新应用程序启用应用程序 ID 请启用该应用程序 ID 作为主要应用程序 ID 您
  • 使用 MEF 从 shell 加载棱镜模块视图

    我有一个 shell 项目 它将引导程序中的模块加载到 shell 主视图中的选项卡控件中 我刚刚在选项卡项上实现了一个关闭按钮 现在提出了如何从 shell 重新加载模块视图的问题 尝试使用 moduleManager LoadModul
  • 获取 Qt 对象的大小

    我正在使用 Qt 和 C 我需要找出某些 Qt 类的实例使用的内存量 这通常是使用 sizeof 完成的 但是在 Qt 中 每个类都保存一个指向包含实际实现的另一个类的指针 此私有实现类的定义在标头中找不到 而仅在源代码中找到 我是 Qt
  • 根据 UIView/CGRect 的大小将图像裁剪为正方形

    我有一个 AVCaptureSession 的实现 我的目标是让用户拍照并只保存红色方形边框内的图像部分 如下所示 AVCaptureSession 的previewLayer 相机 跨越 0 0 左上角 到相机控制栏的底部 包含快门的视图
  • 如何将 CreateThread 用于类成员函数?

    你如何使用CreateThread 创建作为类成员的函数的线程 您需要创建一个静态方法来用作实际的线程启动函数 并将一个指向实例的指针作为lpParameter论证CreateThread 这将被传递给静态方法 该方法可以将其转换为对象指针
  • NextJS 在生产构建中 CSS 顺序错误

    我从本地文件和节点模块导入 CSS 文件 gt Global Styling Local import styles globals scss Icons import fortawesome fontawesome free css al