Реагирование не определяется при сборке

Я новичок в TypeScript и подумал, что подброшу демо-версию списка продуктов с веб-сайта ReactJS. У меня так далеко, но сейчас получаю

external "React":1 Uncaught ReferenceError: React is not defined
    at Object.react (external "React":1)
    at __webpack_require__ (bootstrap:19)
    at Object../src/client/app/index.tsx (index.tsx:1)
    at __webpack_require__ (bootstrap:19)
    at bootstrap:83
    at bootstrap:83

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

Любая помощь будет оценена по достоинству.

Я импортирую таким образом import * as React from 'react';

webpack не выдает ошибок

INDEX.TSX

import * as React from 'react';
var ReactDOM = require('react-dom');

import FilterableProductTable from './components/FilterableProductTable';
import Basket from './components/Basket';

ReactDOM.render(
	<div>
		<FilterableProductTable />
		<Basket />
	</div>,
	document.getElementById('app')
);

Поделитесь конфигурацией вашего веб-пакета. Кроме того, вам не нужно использовать import * as React. Просто позвоните import React from 'react'

keul 26.09.2018 11:54

@LucaFabbri При использовании TypeScript import * as React from 'react' - это правильный путь.

sdgluck 26.09.2018 18:30

У меня сейчас точно такая же проблема. Я нашел этот ссылка, который может вам помочь, он сказал, что необходимо создать новый index.html, добавив зависимости реакции. Если я найду лучший ответ, я дам тебе знать

octavioccl 26.09.2018 19:40

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

Matt McCutchen 27.09.2018 03:30

@MattMcCutchen, знаете ли вы, есть ли разница, если он использовал awesome-typescript-loader вместо ts-loader?

octavioccl 27.09.2018 04:28

@octavioccl Я не думаю, что должна быть разница. Опубликуйте репозиторий, в котором воспроизводится проблема, и я посмотрю.

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

Ответы 1

У меня тоже была эта проблема. После того, как я погуглил об ошибке в течение дня или около того, я наткнулся на эту страницу.

По ссылке, предоставленной octavioccl в комментариях - (http://www.typescriptlang.org/docs/handbook/react-&-webpack.html).

Клянусь, я читал эту страницу около дюжины раз и примерно пытался следить за ней, пока конвертировал свой проект на TypeScript. В любом случае, что мне помогло, что этот раздел здесь:

«Нам также понадобится страница для отображения нашего компонента Hello. Создайте файл в корне проекта с именем index.html со следующим содержимым:»

<!DOCTYPE html>
<html>
    <head>
        <meta charset = "UTF-8" />
        <title>Hello React!</title>
    </head>
    <body>
        <div id = "example"></div>

        <!-- Dependencies -->
        <script src = "./node_modules/react/umd/react.development.js"></script>
        <script src = "./node_modules/react-dom/umd/react-dom.development.js"></script>

        <!-- Main -->
        <script src = "./dist/bundle.js"></script>
    </body>
</html>

"Обратите внимание, что мы включаем файлы из node_modules. Пакеты npm React и React-DOM включают автономные файлы .js, которые вы можете включить на веб-страницу, и мы ссылаемся на них напрямую, чтобы все двигалось быстрее. Не стесняйтесь копировать эти файлы в другой каталог или, в качестве альтернативы, разместить их в сети доставки контента (CDN). Facebook делает доступными версии React, размещенные на CDN ... "

Я добавил зависимости в свой файл index.html, и он решил эту проблему.

Надеюсь, это поможет кому-то другому, кто наткнется на это.

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