Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] O node não consegue achar a rota do arquivo e não entendi outra coisa

bug:

Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\Usuario\Documents\Programas\Js\Servidor Node_Js\ExpressEMongoDB\src\Routes\LivrosRoutes' imported from C:\Users\Usuario\Documents\Programas\Js\Servidor Node_Js\ExpressEMongoDB\src\Routes\index.js
    at new NodeError (node:internal/errors:405:5)
    at finalizeResolution (node:internal/modules/esm/resolve:324:11)
    at moduleResolve (node:internal/modules/esm/resolve:943:10)
    at defaultResolve (node:internal/modules/esm/resolve:1129:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:835:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}`
**livrosRoutes:**
`import express from "express";
import LivroController from "../controller/livroController";

const routes = express.Router();
routes.get("/livros", LivroController.ListarLivros);

export default routes;`
    
**index.js onde esta dando o erro:**

`import express from 'express'
import livros from './LivrosRoutes';

const routes = (app) =>{
    app.route("/").get((req, res) => res.status(200).send("Curso de Node.js"));
    app.use(express.json(), livros);
}
export default routes;`

Porque estou importando livros de ./LivrosRoutes ao inves de importar de models não entendi isso?

2 respostas
solução!

Olá, Carlos! Tudo bem?

Entendo que você está com dúvidas sobre o erro que está ocorrendo e também sobre a estrutura do seu código.

Vamos começar pelo erro. O Node.js está informando que não consegue encontrar o módulo 'LivrosRoutes'. Isso geralmente ocorre quando o arquivo não existe no caminho especificado ou o nome do arquivo está incorreto. No seu caso, o erro pode estar ocorrendo porque você precisa inserir a extensão .js ao final do nome do arquivo:

Então, você deve alterar a linha de importação no seu arquivo 'index.js' para:

import express from "express";
import LivroController from "../controllers/livroController.js";

Agora, sobre a sua dúvida em relação à importação do modelo, a estrutura do seu código está seguindo o padrão MVC (Model-View-Controller). Nesse padrão, o modelo (no seu caso, 'models') é responsável por lidar com os dados e a lógica de negócios. O controlador (no seu caso, 'LivroController') atua como um intermediário entre o modelo e a visão, processando todas as solicitações de entrada.

No seu código, 'LivrosRoutes' é responsável por definir as rotas para as operações relacionadas aos livros. Quando uma dessas rotas é acessada, a função correspondente no controlador 'LivroController' é chamada. Essa função, por sua vez, interage com o modelo para realizar a operação necessária (por exemplo, listar livros). É por isso que você está importando 'LivrosRoutes' em vez de 'models'.

Fico à disposição.

Espero ter ajudado e bons estudos!

Muito obrigado. Nossa nem percebi que o modulo estava sem o .js no final.