Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

130
Vistas
El CSS global de Next.js no se puede importar desde archivos que no sean su <aplicación> personalizada

Mi aplicación React funcionaba bien, también usaba CSS global.

npm i next-images , agregué una imagen, next.config.js , ran npm run dev y ahora recibo este mensaje

 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

Revisé los documentos, pero las instrucciones me parecen un poco confusas ya que soy nuevo en React.

Además, ¿por qué ocurriría este error ahora? ¿Crees que tiene algo que ver con la instalación de npm?

Intenté eliminar los archivos nuevos que agregué junto con su código, pero esto no soluciona el problema. También probé lo Leer más: sugiere.

Mi componente de nivel más alto.

 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;

Mi siguiente.config.js

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

Mi archivo main.scss

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

mi global.scss

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

Lo que me parece más extraño es que este error apareció sin cambiar nada relacionado con CSS o Layout.js, ¿y funcionaba anteriormente?

He movido mi importación main.scss a la página pages/_app.js, pero los estilos aún no aparecen. Así es como se ve la página _app.js

 import '../global-styles/main.scss' export default function MyApp({ Component, props }) { return <Component {...props} /> }
over 4 years ago · Santiago Trujillo
7 Respuestas
Responde la pregunta

0

Utilice el cargador de CSS Next.js integrado (consulteaquí ) en lugar del heredado @zeit/next-sass .

  1. Reemplace el paquete @zeit/next-sass con sass .
  2. Eliminar next.config.js . O no cambie la carga de CSS en él.
  3. Mueva el CSS global como se sugiere en el mensaje de error.

Dado que Next.js 9.2, el CSS global debe importarse en el componente <App> personalizado.

 // pages/_app.js import '../global-styles/main.scss' export default function MyApp({ Component, pageProps }) { return <Component {...pageProps} /> }

Para agregar estilos solo a un componente o página específicos, puede usar el soporte integrado de módulos CSS. (ver aquí )

Por ejemplo, si tiene un componente Button.js , puede crear un archivo Sass button.module.scss e incluirlo en el componente.

over 4 years ago · Santiago Trujillo Denunciar

0

Para mí, el problema fue porque había usado dos módulos. exportaciones en mi archivo next.config.js como este

 const withPlugins = require('next-compose-plugins') const sass = require('@zeit/next-sass') const css = require('@zeit/next-css') const nextConfig = { webpack: function(config){ config.module.rules.push({ test: /\.(eot|woff|woff2|ttf|svg|png|jpg|gif)$/, use: { loader: 'url-loader', options: { limit: 100000, name: '[name].[ext]' }} }) return config } } module.exports = withPlugins([ [css], [sass, { cssModules: true }] ], nextConfig) module.exports = { env: { MONGO_URI = 'your uri' } }

. 1 Lo modifiqué para cambiar el módulo de exportación así.

 const nextConfig = { webpack: function(config){ config.module.rules.push({ test: /\.(eot|woff|woff2|ttf|svg|png|jpg|gif)$/, use: { loader: 'url-loader', options: { limit: 100000, name: '[name].[ext]' }} }) return config }, env: { MONGO_URI: "your uri" } }

2 luego eliminé el segundo módulo.exportaciones

over 4 years ago · Santiago Trujillo Denunciar

0

No necesitaba hacer nada dentro de next.config.js .

Supongamos que está utilizando un css global como Bootstrap, lo que significa que contiene css que debe aplicarse a toda su aplicación y a todas las diferentes páginas dentro de ella.

Los archivos css globales deben conectarse a NextJS de una manera muy particular.

Entonces, dentro del directorio pages/ necesitas crear _app.js .

Es fundamental que el archivo se llame _app.js .

Luego, en la parte superior de ese archivo, importaría Bootstrap css de la siguiente manera:

import 'bootstrap/dist/css/bootstrap.css';

Luego agregarías lo siguiente:

 export default ({ Component, pageProps }) => { return <Component {...pageProps} />; };

Entonces, ¿qué está pasando en ese código?

Bueno, detrás de escena, siempre que intente navegar a alguna página distinta con NextJS, NextJS importará su componente desde uno de los diferentes archivos dentro de su directorio pages/ .

NextJS no solo toma su componente y lo muestra en la pantalla.

En cambio, lo envuelve dentro de su propio componente predeterminado personalizado y se lo conoce dentro de NextJS como la aplicación.

Lo que está haciendo al definir _app.js es definir su propio componente de aplicación personalizado.

Entonces, cada vez que intente visitar una ruta dentro de un navegador o su ruta raíz, NextJS importará ese componente dado y lo pasará a AppComponent como el Component prop.

Entonces, el Component allí es igual a cualquier componente que tenga en el directorio pages/ . Y luego pageProps será el conjunto de componentes que tiene la intención de pasar a sus archivos dentro de pages/ .

Para resumir, esta cosa es como una envoltura delgada alrededor del componente que está tratando de mostrar en la pantalla.

¿Por qué tienes que definir esto en absoluto?

Bueno, si alguna vez desea incluir CSS global en el proyecto, Bootstrap es un CSS global, por ejemplo, solo puede importar CSS global en el archivo _app.js .

Resulta que si intenta visitar otros componentes u otras páginas, NextJS no carga ni analiza esos archivos.

Por lo tanto, cualquier css que haya importado allí no se incluirá en el archivo HTML final.

Entonces, tiene un css global que debe incluirse en cada página, debe importarse al archivo de la aplicación porque es el único archivo que se garantiza que se cargará cada vez que un usuario acceda a su aplicación.

No olvide que, además de importar el css dentro de _app.js , también debe ejecutar un arranque de npm install bootstrap en su terminal.

Puede leer más sobre esto aquí: https://nextjs.org/docs/messages/css-global

over 4 years ago · Santiago Trujillo Denunciar

0

Puede reemplazar los cargadores CSS de NextJs obstinados (¿y demasiado complejos?) Con los suyos propios. Aquí hay uno simple para css global:

 const MiniCssExtractPlugin = require('mini-css-extract-plugin') module.exports = { reactStrictMode: true, webpack: (config, { buildId, dev, isServer, defaultLoaders, webpack }) => { // Find and remove NextJS css rules. const cssRulesIdx = config.module.rules.findIndex(r => r.oneOf) if (cssRulesIdx === -1) { throw new Error('Could not find NextJS CSS rule to overwrite.') } config.module.rules.splice(cssRulesIdx, 1) // Add a simpler rule for global css anywhere. config.plugins.push( new MiniCssExtractPlugin({ experimentalUseImportModule: true, filename: 'static/css/[contenthash].css', chunkFilename: 'static/css/[contenthash].css', }) ) config.module.rules.push({ test: /\.css$/i, use: !isServer ? ['style-loader', 'css-loader'] : [MiniCssExtractPlugin.loader, 'css-loader'], }) return config }, }
over 4 years ago · Santiago Trujillo Denunciar

0

Agregue esto a su _app.js

 import '../styles/globals.css'
over 4 years ago · Santiago Trujillo Denunciar

0

Next.js deja de quejarse cuando su archivo tiene un module en el nombre, por ejemplo, cambiando import '../global-styles/main.scss'; para import '../global-styles/main.module.scss'; arreglaría la advertencia y podría tener sus estilos en global-styles , o por ejemplo, en su component .

No se requieren dependencias/configuraciones adicionales en next.config.js .

over 4 years ago · Santiago Trujillo Denunciar

0

Intente incluir ".module" en su nombre de archivo scss.

Cambie main.scss a main.module.scss

Ejemplo:

 import styles from './todolist-profile-info.module.scss'
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda