Не удалось скомпилировать React. Модуль не найден: не удается решить, как скомпилировать с помощью реактивного маршрутизатора?

Я имею дело с проблемой в двух новых проектах, которые я только что начал, и я настроил их так, как на другом в производстве, и по какой-то причине я не могу найти здесь ошибку.

Я начал свой проект реагирования с последней версии create-react-app, используя: npx create-react-app myapp, и по какой-то причине мое приложение не компилируется локально с react-router-dom.

Вот мои зависимости в моем package.json:

"dependencies": {
    "react": "^16.8.6",
    "react-bootstrap": "^0.32.4",
    "react-dom": "^16.8.6",
    "react-router-dom": "^4.3.1",
    "react-scripts": "3.0.1"

У меня есть файл index.js, в котором я помещаю свой компонент <App /> внутрь компонента <Router />, который я импортирую с помощью BrowserRouter, как указано в react-router-dom.

Вот содержимое моего index.js файла:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import { BrowserRouter as Router } from 'react-router-dom';

ReactDOM.render(
  <Router>
    <App />
  </Router>,
  document.getElementById('root')
);

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: 
serviceWorker.unregister();

Оттуда мой компонент <App /> реализует пользовательский компонент <Routes />, который использует Route и Switch из react-router-dom для удовлетворения потребностей маршрутизации моего приложения.

Вот содержимое моего компонента <App />:

import React, { Component } from "react";
import { Link } from "react-router-dom";
import { Navbar } from "react-bootstrap";
import Routes from "./Routes.js";
import "./App.css";

class App extends Component {
  render() {
    return (
      <div className = "App container">
        <Navbar fluid collapsOnSelect>
          ...... misc navbar code
        </Navbar>
        <Routes />
      </div>
      );
  }
}

export default App;

Вот как выглядит мой файл Routes.js и как он использует Route и Switch из react-router-dom:

import React from "react";
import { Route, Switch } from "react-router-dom";
import Home from "./containers/Home";

export default () => <Switch>
                       <Route path = "/" exact component = { Home } />
                     </Switch>;

Вот компонент { Home }, который я пытаюсь обслуживать локально:

import React, { Component } from "react";
import "./Home.css";

export default class Home extends Component {
  render() {
    return (
      <div className = "Home">
        <div className = "LandingPage">
          ... random html code
        </div>
      </div>
      );
  }
}

И, наконец, вот ошибка:

Не удалось скомпилировать React. Модуль не найден: не удается решить, как скомпилировать с помощью реактивного маршрутизатора?

Как вы думаете, в чем здесь может быть проблема??? Спасибо !

ОБНОВЛЕНИЕ: добавление иерархии файлов

Не удалось скомпилировать React. Модуль не найден: не удается решить, как скомпилировать с помощью реактивного маршрутизатора?

Не могли бы вы рассказать нам свою файловую иерархию? Где ваши разные файлы находятся по отношению друг к другу.

Calvin Godfrey 29.05.2019 20:19

может так и должно быть import Home from "containers/Home"; (убрать './')

Ted 29.05.2019 20:21

@CalvinGodfrey Я обновил его, добавив для вас изображение файловой структуры проекта, и спасибо, что заглянули!

lopezdp 29.05.2019 20:29

@Ted Я попробовал это, но это не так. Это не сработало. Каталог контейнеров находится в другой папке в проекте... Для получения дополнительной информации см. обновление. Спасибо!

lopezdp 29.05.2019 20:31

Переместите папку containers в папку src

Fraction 29.05.2019 20:31

Да, теперь, когда вы добавили структуру, стало ясно, в чем проблема.

Ted 29.05.2019 20:33

@ted извини за это! Я полностью пропустил это. Спасибо!

lopezdp 29.05.2019 20:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
454
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ах! Так было и с файловой иерархией. Routes.js находится в src, поэтому он ищет в src/components, которого не существует.

Вместо этого сделайте import Home from "../containers/Home"; или реструктурируйте проект так, чтобы containers было внутри src.

Я знал, что это что-то нелепое. Позвольте мне попробовать это сейчас, чтобы убедиться, и я отмечу это как ответ. Спасибо за добавление еще одного взгляда на это. Я бы хотел, чтобы это была более серьезная проблема!!! смш

lopezdp 29.05.2019 20:33

Ваш route.js должен быть

import Home from "../containers/Home";

Вам нужно подняться на один каталог, чтобы добраться до контейнеров, так как вы настроили, ищет контейнеры внутри там src

Я пошел дальше и просто переместил каталог в /src, спасибо!

lopezdp 29.05.2019 20:40

Другие вопросы по теме