Não posso acreditar que estou fazendo uma pergunta óbvia, mas ainda recebo o erro no log do console.
O console diz que não consegue encontrar o módulo no diretório, mas verifiquei pelo menos 10 vezes em busca de erros de digitação. De qualquer forma, aqui está o código do componente.
Eu quero renderizar o cabeçalho na raiz
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 é o Header
componente
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'));
Verifiquei pelo menos 10 vezes se o módulo está neste local ./src/components/header/header
e está (a pasta "header" contém "header.js").
Mesmo assim, o React ainda gera este erro:
Falha ao compilar
./src/App.js
Module not found: Can't resolve './src/components/header/header' in '/home/wiseman/Desktop/React_Components/github-portfolio/src'
O teste npm diz a mesma coisa.
javascript
reactjs
Vladimir Jovanović
fonte
fonte
export default Header;
no seu 'arquivo de cabeçalho'import Header from './components/header/header'
sem src. O caminho do arquivo é relativo ao caminho do arquivo de importação. Então você precisa de exportaçãoHeader
deheader.js
e correçãoApp.render
de método.components
pasta dasrc
pasta, isso me diz que preciso modificar osnode_modules
arquivos, o que não é minha atenção.import smth from './components/header/header'
mesmo para esta linhaimport navBar from './src/components/header/navBar'
, deve ser relativo ao caminho atualimport navBar from './navBar'
Respostas:
A maneira que geralmente usamos
import
é baseada no caminho relativo..
e..
são semelhantes a como usamos para navegarterminal
comocd ..
para sair do diretório emv ~/file .
mover umfile
para o diretório atual.No seu caso,
App.js
está nosrc/
diretório enquantoheader.js
está emsrc/components
. Paraimport
você fariaimport Header from './components/header'
. Isso traduz aproximadamente em meu diretório atual, localizar a pasta de componentes que contém um arquivo de cabeçalho.Agora, se de
header.js
, você precisa deimport
algo decard
, você faria isso.import Card from '../containers/card'
. Isso traduz para, mover para fora do meu diretório atual, procurar por recipientes de nome de pasta que têm um arquivo de cartão.Quanto
import React, { Component } from 'react'
, este não começar com um./
ou../
ou/
, portanto, nó irá começar a olhar para o módulo nonode_modules
em uma ordem específica até quereact
seja encontrada. Para um entendimento mais detalhado, pode ser lido aqui .fonte
Se você criar um aplicativo com react-create-app, não se esqueça de definir a variável de ambiente:
Ou adicione um
.env
arquivo à pasta raiz;fonte
App.css
parasrc/
e fezimport App.css
. Mas isso me deu o erro da pergunta. Esta resposta resolveu o problema.Incluir
NODE_PATH
como variável de ambiente em.env
está obsoleto e foi substituído por incluir"baseUrl": "./src"
,compilerOptions
emjsconfig.json
outsconfig.json
.Referência
fonte
Excluído o arquivo package-lock.json e, em seguida, execute
Leia mais
fonte
no meu caso, a mensagem de erro foi
Module not found: Error: Can't resolve '/components/body
Enquanto tudo estava no diretório correto.
Descobri que renomear
body.jsx
parabody.js
resolver o problema!Então, adicionei este código
webpack.config.js
para resolverjsx
comojs
module.exports = { //... resolve: { extensions: ['.js', '.jsx'] } };
E então o erro de compilação desapareceu!
fonte
Eu acho que é o uso duplo de cabeçalho. Eu mesmo tentei algo semelhante e também causei problemas. Coloquei meu arquivo de componente em maiúscula para corresponder aos outros e funcionou.
import Header from './src/components/header/header';
Deveria estar
import Header from './src/components/header/Header';
fonte
./components/header/header
eu estava fazendo./components/header
... Eu estou muito velho para esses erros lololEu tive uma questão semelhante.
Causa:
import HomeComponent from "components/HomeComponent";
Solução:
import HomeComponent from "./components/HomeComponent";
NOTA:
./
era antes dos componentes. Você pode ler a postagem de @Zac Kwan acima sobre como usarimport
fonte
Enfrentei o mesmo problema quando criei um novo aplicativo de reação, tentei todas as opções em https://github.com/facebook/create-react-app/issues/2534, mas não ajudou. Tive que mudar a porta para o novo aplicativo e funcionou. Por padrão, os aplicativos usam a porta 3000. Eu mudei a porta para 8001 no package.json da seguinte maneira:
"scripts": { "start": "PORT=8001 react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" },
fonte
Existe uma maneira melhor de lidar com a importação de módulos em seu aplicativo React. Considere fazer isso:
//jsconfig.json { "compilerOptions": { "baseUrl": "./src" } }
Agora, em vez de ligar,
../../
você pode fazer isso facilmente:import navBar from 'components/header/navBar' import 'css/header.css'
Observe que 'componentes /' é diferente de '../components/'
É mais puro assim.
Mas se você deseja importar arquivos no mesmo diretório, você também pode fazer isso:
import logo from './logo.svg'
fonte
Você precisa estar na pasta do projeto, se estiver
src
oupublic
tiver que sair dessas pastas. Suponha que o nome do seu projeto react seja 'hello-react' entãocd hello-react
fonte
você deve alterar o cabeçalho de importação de ' . / src / components / header / header 'para
import Header from ' .. / src / components / header / header'
fonte
Você pode tentar executar 'npm install' na pasta do aplicativo. Isso também pode resolver o problema. Funcionou para mim
fonte
Eu estava enfrentando o mesmo problema e resolvi. Veja se o seu
index.js
arquivo está emsrc
pasta, então, seja qual for o arquivo que você está importando, a pasta que contém isso também deve estar dentro da pasta src.Isso significa que se a pasta de componentes está fora da
src
pasta, basta arrastá-la para dentro dasrc
pasta em seu editor, pois os arquivos fora dasrc
pasta não são importados.Então você poderá importar usando
./components/header/header
(neste caso)fonte
Verifique as declarações de importação. Deve terminar com ponto e vírgula. Se você perder algum, receberá este erro.
Verifique também se a instrução de importação a seguir foi adicionada ao seu componente.
importar {threadId} de 'worker_threads';
Se assim for, remova essa linha. Funciona para mim.
fonte
Para mim, eu tinha a entrada correta, mas
npm start
pode estar com bugs (pelo menos usá-lo com terminal Hyper no Windows e Linux). Se eu mover arquivos para pastas diferentes, o npm start não detecta essas mudanças. Preciso cancelar o processo de inicialização do npm, mover, salvar e executarnpm start
e ele verá os arquivos agora.fonte
No meu caso, eu renomeio um arquivo de componente, um código VS adiciona a linha de código abaixo para mim:
import React, { Component } from "./node_modules/react";
Então, resolvi removendo:
./node_modules/
import React, { Component } from "react";
Felicidades!
fonte