Esta es una restricción especial agregada por los desarrolladores de create-react-app. Se implementa ModuleScopePluginpara garantizar que los archivos residan 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, pero solo después de la ejectoperación del proyecto create-react-app.
La mayoría de las funciones y sus actualizaciones están ocultas en las partes internas del sistema create-react-app. Si lo hace eject, ya no tendrá 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 realice la ejectoperación.
Juega según las reglas existentes (muévete a src). Pero ahora puede saber cómo eliminar la restricción: hacer ejecty eliminar ModuleScopePlugindel archivo de configuración del paquete web .
Desde create-react-app v0.4.0, la NODE_PATHvariable de entorno permite especificar una ruta para la importación absoluta. Y desde v3.0.0 NODE_PATH está en desuso a favor de establecer baseUrlen jsconfig.jsono tsconfig.json.
La importación absoluta permite usar en import App from 'App'lugar import App from './App'del valor especificado en la URL base.
Esta característica es específicamente útil para monorepos u otras preguntas de configuración, pero no para importar imágenes o cualquier otra cosa desde la publiccarpeta.
El contenido de la publiccarpeta se colocará en la buildcarpeta y estará disponible por URL relativa. Además, todo lo importado será procesado por webpack y se colocará también en la buildcarpeta.
Si importa algo de la publiccarpeta, probablemente esa cosa se duplicará en la buildcarpeta y estará disponible por dos URL diferentes (o con diferentes formas de carga), lo que finalmente empeorará el tamaño de descarga del paquete.
Importar desde la carpeta src es preferible y tiene ventajas. Todo será empaquetado por paquete web con el paquete con trozos de tamaño óptimo y para la mejor eficiencia de carga .
Hay soluciones intermedias, a saber, el sistema de cableado que le permite modificar mediante programación la configuración del paquete web. Pero eliminar el ModuleScopePlugincomplemento no es una buena solución; es mejor agregar directorios adicionales totalmente funcionales similares a src.
Actualmente, create-react-appno admite directorios adicionales que no sean srcen la carpeta raíz. Esto se puede hacer usando react-app-rewire-alias
../public/images/logo_2016.pngSubiste dos veces, primero fuera de la carpeta de componentes, luego fuera de la carpeta src.