snippetjavascriptreactCritical
The create-react-app imports restriction outside of src directory
Viewed 0 times
createtheappdirectorysrcreactrestrictionimportsoutside
Problem
I am using create-react-app. I am trying to call an image from my public folder from a file inside my
./src/components/website_index.js Module not found: You attempted to
import ../../public/images/logo/WC-BlackonWhite.jpg which falls
outside of the project src/ directory. Relative imports outside of
src/ are not supported. You can either move it inside src/, or add a
symlink to it from project's node_modules/.
I have read many things saying you can do an import to the path but that is still not working for me. Any help would be greatly appreciated. I know there are many questions like this but they are all telling me to import logo or image so clearly I am missing something in the big picture.
src/components. I am receiving this error message../src/components/website_index.js Module not found: You attempted to
import ../../public/images/logo/WC-BlackonWhite.jpg which falls
outside of the project src/ directory. Relative imports outside of
src/ are not supported. You can either move it inside src/, or add a
symlink to it from project's node_modules/.
import logo from '../../public/images/logo_2016.png';
I have read many things saying you can do an import to the path but that is still not working for me. Any help would be greatly appreciated. I know there are many questions like this but they are all telling me to import logo or image so clearly I am missing something in the big picture.
Solution
This is special restriction added by developers of create-react-app. It is implemented in
There is no official way to disable this feature except using
But, most features and its updates are hidden into the internals of create-react-app system. If you make
Play by the existing rules - move assets to src or use based on
However instead of
rewire which allows you to programmatically modify the webpack config without
The better way is to add fully working additional directories similar to
Anyway do not import from
Importing from the
ModuleScopePlugin to ensure files reside in src/. That plugin ensures that relative imports from app's source directory don't reach outside of it.There is no official way to disable this feature except using
eject and modify webpack config.But, most features and its updates are hidden into the internals of create-react-app system. If you make
eject you will have no more new features and its update. So if you are not ready to manage and configure application included to configure webpack and so on - do not do eject operation.Play by the existing rules - move assets to src or use based on
public folder url without import.However instead of
eject there are much unofficial solutions, based onrewire which allows you to programmatically modify the webpack config without
eject. But removing the ModuleScopePlugin plugin is not good - this loses some protection and does not adds some features available in src. ModuleScopePlugin is designed to support multiple folders.The better way is to add fully working additional directories similar to
src also protected by ModuleScopePlugin. This can be done using react-app-aliasAnyway do not import from
public folder - that will be duplicated in the build folder and will be available by two different url (and with different ways to load), which ultimately worsen the package download size.Importing from the
src folder is preferable and has advantages. Everything will be packed by webpack to the bundle with chunks optimal size and for best loading efficiency.Context
Stack Overflow Q#44114436, score: 250
Revisions (0)
No revisions yet.