No puedo creer que esté haciendo una pregunta obvia, pero sigo recibiendo el error en el registro de la consola.
La consola dice que no puede encontrar el módulo en el directorio, pero he comprobado al menos 10 veces si hay errores tipográficos. De todos modos, aquí está el código del componente.
Quiero renderizar el encabezado en la raíz.
import React, { Component } from 'react'
import Header from './src/components/header/header'
import logo from './logo.svg'
import './App.css'
class App extends Component {
render() {
return (
<Header/>
);
}
}
export default App;
Este es el Headercomponente
import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import navBar from './src/components/header/navBar'
import './src/css/header.css'
class Header extends Component {
render() {
return {
<div>
<div id="particles-js"></div>
<navBar/>
<Title/>
</div>
};
}
}
ReactDOM.render(<Header/>, document.getElementById('header'));
He comprobado al menos 10 veces que el módulo está en esta ubicación ./src/components/header/header, y lo está (la carpeta "header" contiene "header.js").
Sin embargo, React todavía arroja este error:
No se pudo compilar
./src/App.js
Module not found: Can't resolve './src/components/header/header' in '/home/wiseman/Desktop/React_Components/github-portfolio/src'
La prueba npm dice lo mismo.
fuente

export default Header;en su 'archivo de encabezado'import Header from './components/header/header'w / o src. La ruta del archivo es relativa a la ruta del archivo de importación. Luego hay que exportarHeaderdesdeheader.jsy fijarApp.rendermétodo.componentscarpeta fuera de lasrccarpeta, entonces me dice que necesito modificar losnode_modulesarchivos, lo cual no es mi atención.import smth from './components/header/header'Igual para esta líneaimport navBar from './src/components/header/navBar', debería ser relativo a la ruta actualimport navBar from './navBar'Respuestas:
La forma en que usamos habitualmente
importse basa en la ruta relativa..y..son similares a cómo usamos para navegarterminalcomocd ..para salir del directorio ymv ~/file .mover unfileal directorio actual.En su caso,
App.jsestá en elsrc/directorio mientrasheader.jsestá ensrc/components. Paraimportti haríasimport Header from './components/header'. Esto se traduce aproximadamente a en mi directorio actual, busque la carpeta de componentes que contiene un archivo de encabezado.Ahora, si desde
header.js, necesitasimportalgo decard, harías esto.import Card from '../containers/card'. Esto se traduce a, salir de mi directorio actual, buscar un contenedor de nombre de carpeta que tenga un archivo de tarjeta.En cuanto a
import React, { Component } from 'react', esto no se inicia con una./o../ni/, por tanto, el nodo comenzará a buscar el módulo en elnode_modulesen un orden específico hasta quereactse encuentra. Para una comprensión más detallada, se puede leer aquí .fuente
Si crea una aplicación con react-create-app, no olvide establecer la variable de entorno:
O agregue al
.envarchivo a su carpeta raíz;fuente
App.cssay losrc/hiceimport App.css. Pero eso me dio el error de la pregunta. Esta respuesta resolvió el problema.Agregar
NODE_PATHcomo variable de entorno en.envestá obsoleto y se reemplaza por agregar"baseUrl": "./src",compilerOptionsenjsconfig.jsonotsconfig.json.Referencia
fuente
Eliminó el archivo package-lock.json y luego ejecutó
Leer más
fuente
en mi caso, el mensaje de error fue
Module not found: Error: Can't resolve '/components/bodyMientras todo estaba en el directorio correcto.
¡Encontré ese cambio
body.jsxde nombre parabody.jsresolver el problema!Así que agregué este código
webpack.config.jspara resolverlojsxcomojsmodule.exports = { //... resolve: { extensions: ['.js', '.jsx'] } };¡Y luego desapareció el error de compilación!
fuente
Creo que es el doble uso del encabezado. Intenté algo similar yo mismo y también causé problemas. Capitalicé mi archivo de componentes para que coincida con los demás y funcionó.
import Header from './src/components/header/header';Debiera ser
import Header from './src/components/header/Header';fuente
./components/header/header, estaba haciendo./components/header... Soy demasiado mayor para esos errores lololTuve un problema similar.
Porque:
import HomeComponent from "components/HomeComponent";Solución:
import HomeComponent from "./components/HomeComponent";NOTA:
./fue antes de componentes. Puede leer la publicación de @Zac Kwan arriba sobre cómo usarimportfuente
Enfrenté el mismo problema cuando creé una nueva aplicación de reacción, probé todas las opciones en https://github.com/facebook/create-react-app/issues/2534 pero no ayudó. Tuve que cambiar el puerto de la nueva aplicación y luego funcionó. De forma predeterminada, las aplicaciones usan el puerto 3000. Cambié el puerto a 8001 en package.json de la siguiente manera:
"scripts": { "start": "PORT=8001 react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" },fuente
Necesita estar en la carpeta del proyecto, si está dentro
srcopublictiene que salir de esas carpetas. Suponga que el nombre de su proyecto de reacción es 'hola-reacciona' entoncescd hello-reactfuente
debe cambiar el encabezado de importación de ' ./ src / components / header / header 'a
importar Encabezado de ' .. / src / components / header / header'
fuente
Puede intentar ejecutar 'npm install' en la carpeta de la aplicación. Esto también podría resolver el problema. Funcionó para mí.
fuente
Estaba enfrentando el mismo problema y lo resolví. Vea si su
index.jsarchivo está ensrccarpeta, entonces cualquier archivo que esté importando, la carpeta que lo contiene también debe estar dentro de la carpeta src.Eso significa que si su carpeta de componentes está fuera de la
srccarpeta, simplemente arrástrela dentro de lasrccarpeta en su editor porque los archivos fuera desrccarpeta no se importan.Entonces podrá importar usando
./components/header/header(en este caso)fuente
Existe una mejor manera de manejar la importación de módulos en su aplicación React. Considere hacer esto:
//jsconfig.json { "compilerOptions": { "baseUrl": "./src" } }Ahora, en lugar de llamar
../../, puede hacer esto fácilmente:import navBar from 'components/header/navBar' import 'css/header.css'Tenga en cuenta que 'componentes /' es diferente de '../components/'
Es más ordenado de esta manera.
Pero si desea importar archivos en el mismo directorio, también puede hacerlo:
import logo from './logo.svg'fuente
Verifique las declaraciones de importación. Debe terminar con punto y coma. Si omite alguno, obtendrá este error.
También verifique si la siguiente declaración de importación se agregó en su componente.
importar {threadId} de 'worker_threads';
Si es así, elimine esa línea. Esto funciona para mi.
fuente
En mi caso, cambio el nombre de un archivo de componente, un código VS agrega la siguiente línea de código para mí:
import React, { Component } from "./node_modules/react";Así que lo arreglé eliminando el:
./node_modules/import React, { Component } from "react";¡Salud!
fuente