Saltar al contenido

La restricción create-react-app importa fuera del directorio src

Solución:

Esta es una restricción especial agregada por los desarrolladores de create-react-app. Está implementado en ModuleScopePlugin para asegurar que los archivos residan en src/. Ese complemento garantiza que las importaciones relativas del directorio de origen de la aplicación no lleguen fuera de él.

Puede deshabilitar esta función (una de las formas) por eject operación del proyecto create-react-app.

La mayoría de las funciones y sus actualizaciones están ocultas en el interior del sistema create-react-app. Si tu haces eject ya no tendrás algunas características y su actualización. Entonces, si no está listo para administrar y configurar la aplicación incluida para configurar el paquete web, etc., no lo haga eject operación.

Juega según las reglas existentes (muévete a src). Pero ahora puede saber cómo eliminar la restricción: hacer eject y quitar ModuleScopePlugin desde el archivo de configuración del paquete web.


En lugar de eject hay soluciones intermedias, como rewire, que le permite modificar programáticamente la configuración del paquete web sin eject. Pero quitando los ModuleScopePlugin enchufar no es bueno – esto pierde algo de protección y no agrega algunas funciones disponibles en src.

La mejor manera es agregar directorios adicionales que funcionen completamente de manera similar a src. Esto se puede hacer usando react-app-rewire-alias


No importar de public carpeta – que se duplicará en la build carpeta y estará disponible por dos URL diferentes (o con diferentes formas de cargar), lo que finalmente empeorará el tamaño de descarga del paquete.

Importando desde el src La carpeta es preferible y tiene ventajas. Todo se empaquetará mediante paquete web en el paquete con trozos tamaño óptimo y para la mejor eficiencia de carga.

El paquete react-app-rewired se puede utilizar para eliminar el complemento. De esta forma no es necesario que expulse.

Siga los pasos en la página del paquete npm (instale el paquete y cambie las llamadas en el archivo package.json) y use un config-overrides.js archivo similar a este:

const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');

module.exports = function override(config, env) {
    config.resolve.plugins = config.resolve.plugins.filter(plugin => !(plugin instanceof ModuleScopePlugin));

    return config;
};

Esto eliminará el ModuleScopePlugin de los complementos de WebPack usados, pero dejará el resto como estaba y eliminará la necesidad de expulsarlo.

Si sus imágenes están en la carpeta pública, debe usar

"https://foroayuda.es/images/logo_2016.png"

en tus <img> src en lugar de importar

'../../public/images/logo_2016.png'; 

Esto funcionará

<img className="Header-logo" src="https://foroayuda.es/images/logo_2016.png" alt="Logo" />
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *