React.createElement: недопустимый тип - Express / Node.js и React-Router

Пытаясь заставить реагировать-маршрутизатор на моем сервере Node / Express и на интерфейсе React, я сталкиваюсь с этим предупреждением при попытке создать

React.createElement: недопустимый тип - ожидается строка

В поисках ответов я обнаружил этот уже заданный вопрос

React.createElement: недопустимый тип - ожидается строка

Из них решения с участием * проверка всех моих экспортных компонентов класса по умолчанию ... * Импорт BrowserRouter из реактивного роутера против реактивного роутера

Не исправляйте мою проблему. Кроме того, когда я открываю DevTools в Chrome, я вижу, что страница пуста, React не заполнил мой корневой div и, помимо всего прочего, есть ошибка в консоли client-bundle.js:1 Uncaught SyntaxError: Unexpected token <

Когда я нажимаю на эту ошибку, она приводит меня к источнику моего client-bundle.js, который не содержит javascript, но содержит разметку шаблонного html.

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

umleto.js

import express from 'express';
import router from './routing/router';

// Basic config
const PORT = 3000;
const HOST = 'localhost';
const app = express();

// Setup server side router
router(app);

// Setup EJS template engine
app.set('views', `${__dirname}/views`);
app.set('view engine', 'ejs');

// Start server
const server = app.listen(PORT, () => console.info(`Listening to ${HOST}:${PORT}`));

маршрутизация / router.js

import React from 'react';
import { renderToString } from 'react-dom/server';
import { StaticRouter } from 'react-router';
import Routes from './Routes';
import NotFoundPage from '../frontend/components/NotFoundPage';

// React Router as middleware
const router = (req, res, next) => {
    const context = { routes: Routes, location: req.url };
    const markup = renderToString( <StaticRouter context = {context} /> );
    res.render('index', { markup });
    next();

}
export default (app) => app.use(router);

маршрутизация / Routes.jsx

import React from 'react';
import { Route, IndexRoute, Switch } from 'react-router';
import Layout from '../frontend/components/Layout';
import NotFoundPage from '../frontend/components/NotFoundPage';
import IndexPage from '../frontend/components/IndexPage';

// Client Side Routing
const Routes = (
    <Route path = "/" component = {Layout}>
        <IndexRoute component = {IndexPage}/>
        <Route path = "*" component = {NotFoundPage}/>
    </Route>
);

export default Routes;

У меня есть настройка репозитория git hub на случай, если кто-то захочет лучше взглянуть на мой код проблемы. https://github.com/slipsnip/UMLeto

На первый взгляд, не следует ли называть router.js router.jsx из-за того, что в нем есть теги JSX?

SArnab 18.07.2018 03:49

Я просто попробовал это изменение, я также изменил еще несколько ссылок с response-router на react-router-dom в то же время и мне удалось удалить предупреждение, хотя ошибка все еще существует и по-прежнему нет визуализированного вывода. Я начинаю сомневаться в том, что погода parceljs имеет к этому какое-то отношение, потому что я использую его как сборщик пакетов.

meschael 18.07.2018 04:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
2
249
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я решил исходную проблему React.createElement: type is invalid -- expected a string, изменив свой сборщик с Parceljs на Webpack, похоже, это связано с инструментом сборки.

Хотя эта проблема решена, новая была представлена ​​как Error: Failed to lookup view "index" in views directory "//views" в браузере и Error: Can't set headers after they are sent. в консоли после обновления. В настоящее время изучаю эту новую проблему. Я думаю, что лучше всего мне принять этот ответ, потому что новая проблема не имеет отношения к нему.

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

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