Проблема с добавлением в React, Typescript и Webpack bundle.js на страницу

Когда я строю свой проект, он строится нормально и создает файл bundle.js, однако при переходе на страницу http://локальный:8080/ мне выдается предупреждение в консоли:

Loading failed for the <script> with source “http://localhost:8080/dist/bundle.js”.

Я действительно смущен этим, так как кажется, что все строится и запускается правильно.

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

Мой файл webpack.config.js:

"use strict"

const path = require('path');

module.exports = {
    entry: './App.tsx',
    output: {
        filename: "bundle.js",
        path: path.resolve(__dirname, 'dist')
    },
    devServer: {
        publicPath: "/",
        contentBase: "./public",
        hot: true
    },
    resolve: {
        extensions: ['.ts', '.tsx', '.js']
    },
    devtool: "inline-source-map",
    module: {
        rules: [{
            test: /\.(ts|tsx)$/,
            use: 'ts-loader',
            exclude: /node_modules/
        },
        {
            test: /\.css$/,
            use: [
                'style-loader',
                'css-loader'
            ]
        }]
    }
};

tsconfig.json:

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "jsx": "react",
    "allowJs": true
  },
  "include": [
    "App.tsx"
  ]
}

пакет.json

{
  "name": "project",
  "version": "1.0.0",
  "private": true,
  "main": "App.tsx",
  "devDependencies": {
    "@babel/core": "^7.2.2",
    "@babel/preset-env": "^7.3.1",
    "@babel/preset-react": "^7.0.0",
    "@types/react": "^16.8.1",
    "@types/react-dom": "^16.0.11",
    "babel": "^6.23.0",
    "babel-loader": "^8.0.5",
    "css-loader": "^2.1.0",
    "react-hot-loader": "^4.6.5",
    "source-map-loader": "^0.2.4",
    "style-loader": "^0.23.1",
    "ts-loader": "^5.3.3",
    "tslint": "^5.12.1",
    "tslint-react": "^3.6.0",
    "typescript": "^3.3.1",
    "webpack": "^4.29.1",
    "webpack-cli": "^3.2.2",
    "webpack-dev-server": "^3.1.14"
  },
  "dependencies": {
    "awesome-typescript-loader": "^5.2.1",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-scripts": "2.1.3"
  },
  "scripts": {
    "start": "webpack-dev-server --hot --inline",
    "build": "webpack"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

App.tsx так же прост, пока я не смогу заставить его работать с этим тестом:

import * as React from "react";
import * as ReactDOM from "react-dom";

import "./App.css";

export interface Props {}
export interface State {}

class App extends React.Component<Props, State> {
  public render(): JSX.Element {
    return (
       <div className = "test">
       </div>
    );
  }
}

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

И для справки, если я упустил что-то действительно простое, моя файловая структура выглядит так:

  project
  |- package.json
  |- package-lock.json
  |- tsconfig.json
  |- tslint.json
  |- webpack.config.js
  |- App.tsx
  |- App.css
  |- /dist
    |- bundle.js
  |- /public
    |- index.html
  |- /node_modules

Прежде чем переключиться на Typescript с React (я использовал React только с веб-пакетом, а затем решил использовать машинописный текст, реакцию и веб-пакет), он без проблем добавлял div в корневой div, и я надеюсь заставить его делать то же самое, однако сейчас он просто загружает страницу index.html только с <div id = "root"></div> и <script src = "../dist/bundle.js"></script>

Если вы используете cli starter, почему у вас есть пользовательская конфигурация веб-пакета? Вы удалили проект, чтобы использовать пользовательскую конфигурацию. Если это так, вам нужно добавить кое-что для веб-пакета, чтобы преобразовать ts в js webpack.js.org/guides/typescript

varoons 05.02.2019 20:07

@varoons я не катапультировался. Я использую пользовательскую конфигурацию веб-пакета, потому что каждое руководство, которое я нашел, показывает, что вам нужно его создать, и упоминает, что вы должны включить webpack-cli для версии 4+. Ссылка, которую вы включили в свой комментарий, является одной из ссылок, которые я включил в сообщение, которое я уже просмотрел, и мой код уже включает все на этой странице.

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

Ответы 1

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

Ладно, оказывается, это была простая проблема. Я предполагаю, что index.html должен находиться в том же каталоге, что и bundle.js. Как только я переместил index.html в dist, он заработал без проблем.

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