当前位置: 首页 > 面试题库 >

无法从“自定义”以外的文件导入Next.js Global CSS

子车超英
2023-03-14
问题内容

我的React App运行良好,也使用了全局CSS。

我运行npm i next-images,添加图像,编辑了next.config.js,,ran npm run dev现在我收到了此消息

Global CSS cannot be imported from files other than your Custom <App>. Please move all global CSS imports to pages/_app.js.
Read more: https://err.sh/next.js/css-global

我已经检查了文档,但是由于我是React的新手,所以我发现其中的说明有些混乱。

另外,为什么现在会发生此错误?您是否认为与npm安装有关?

我试图删除添加的新文件及其代码,但这不能解决问题。我还尝试了阅读更多内容的建议。

我的最高层组件。

import Navbar from './Navbar';
import Head from 'next/head';
import '../global-styles/main.scss';

const Layout = (props) => (
  <div>
    <Head>
      <title>Bitcoin Watcher</title>
    </Head>
    <Navbar />
    <div className="marginsContainer">
      {props.children}
    </div>
  </div>
);

export default Layout;

我的next.config.js

// next.config.js
  const withSass = require('@zeit/next-sass')
  module.exports = withSass({
  cssModules: true
})

我的main.scss文件

@import './fonts.scss';
@import './variables.scss';
@import './global.scss';

我的global.scss

body {
  margin: 0;
}
:global {
  .marginsContainer {
    width: 90%;
    margin: auto;
  }
}

我发现最奇怪的是,此错误是在没有更改任何与CSS或Layout.js有关的情况下发生的,并且以前可以正常工作吗?

我已经将main.scss导入移动到pages / _app.js页面,但是样式仍然没有通过。这就是_app.js页面的外观

import '../global-styles/main.scss'

export default function MyApp({ Component, props }) {
  return <Component {...props} />
}

问题答案:

使用内置的Next.js CSS加载器,而不是legacy @zeit/next-sass

  1. 用替换@zeit/next-sass软件包sass
  2. next.config.js将其删除或保留为空配置。

next.config.js

module.exports = {
  /* config options here */
};

按照错误消息中的建议移动全局CSS。

/pages/_app.js

import '../global-styles/main.scss'

export default function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />
}

您以前可能没有此错误,因为Next.js放弃了对文件中的全局CSS的支持,而/pages/_app.js不仅仅是在最新版本中。

要将样式仅添加到特定的组件或页面,可以使用CSS模块的内置支持。

例如,如果您有一个组件,则Button.js可以创建一个Sass文件button.module.scss并将其包含在该组件中。

内置Sass支持

添加组件级CSS



 类似资料:
  • 我使用的是Vaadin-7,这个答案对我来说不是固定的。

  • 我正在开发一个Spring启动自定义启动器,其中pom包含一些依赖项(其他启动器、库),并且这个启动器执行一些关于jwt过滤的配置,以允许过滤器处于安全水位。问题是当我在另一个项目(starter-消费者)中添加我的自定义启动器作为pom依赖项时,它似乎检测到我要导入的类,但IntelliJ什么也没做。 也许我没有正确打包启动器,或者至少我在里面编码的类。启动器在pom中包含的其他依赖项被成功添加

  • 请注意,我已经尝试单击“将库'premiumdue.main.jar'添加到类路径”,但它仍然不起作用。 我不知道为什么它不让我导入这个类。 这是一个最小的intellij项目,显示了我的问题:https://www.dropbox.com/s/xzvv2x1ca2lld26/jar_issues.zip?dl=0

  • 问题内容: 我是Java的新手,但我一直在网上寻找解决方案,但似乎都没有用。请帮我。 我有两个文件。其中之一是包含主要功能的java文件。在里面: 使用该命令,我想创建一个新对象,该对象是一个名为的单独文件中的类。但是Java无法识别VaporVisitor是什么,大概是因为它不知道存在(它在同一目录中)。我试图使它们成为同一程序包的一部分,放入不同的程序包中并导入…,但所有这些都失败了。谁能给我

  • 问题内容: 我似乎无法让Python在子文件夹中导入模块。当我尝试从导入的模块创建类的实例时出现错误,但是导入本身成功。这是我的目录结构: 这是server.py的内容: 和user.py: 错误是:AttributeError:’模块’对象没有属性’用户’ 问题答案: 我相信您需要在Models目录中创建一个名为的文件,以便python将其视为模块。 然后,您可以执行以下操作: 您可以在其中添加

  • 我正在使用openpyxl导入/导出xlsx文件。 但是我不能导入我用openpyxl导出的文件。 我必须在Excel中打开导出的xlsx文件,更改导入的xlsx文件的一些值并保存它(它的大小也会改变(例如:从148 Ko到180 Ko)。然后我可以用openpyxl导入它。 我认为,有一个问题,在出口,因为后保存手动导入作品。 谢谢