Как запустить приложение React на странице не index.html - PullRequest
0 голосов
/ 28 августа 2018

Я хочу, чтобы целевая страница моего приложения была базовым HTML-файлом по причинам SEO и производительности. Таким образом, index.html должен быть статическим HTML, а затем, нажимая на ссылку, он переводит пользователя в собственное приложение React.

Я следую этому руководству здесь , чтобы настроить приложение React с нуля, однако при нажатии на ссылку «Приложение» приложение не запускается. Любая помощь приветствуется.

WebPack-конфигурации

const path = require("path");
const webpack = require("webpack");

/*entry: "./src/index.js",*/

module.exports = {
  entry: "./public/index.html",
  mode: "development",
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
        options: { presets: ['env'] }
      },
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      }
    ]
  },
  resolve: { extensions: ['*', '.js', '.jsx'] },
  output: {
    path: path.resolve(__dirname, "dist/"),
    publicPath: "/dist/",
    filename: "bundle.js"
  },
  devServer: {
    contentBase: path.join(__dirname, "public/"),
    port: 3000,
    publicPath: "http://localhost:3000/dist/",
    hotOnly: true
  },
  plugins: [ new webpack.HotModuleReplacementPlugin() ]
};

index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Taduun</title>
  </head>
  <body>
    <a href="app.html">To the APP</a>
  </body>
</html>

app.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>React Starter</title>
  </head>
  <body>
    <div id="root"></div>
    <noscript>
      You need to enable JavaScript to run this app.
    </noscript>
    <script src="../dist/bundle.js"></script>
  </body>
</html>

1 Ответ

0 голосов
/ 29 августа 2018

У вас проблема с файлом webpack-config. Вы должны изменить запись на entry: "./src/index.js", так как это тот пост, которым вы поделились.

Вы неправильно поняли entry в файле. Эта запись является записью для файла вашего локального сервера, а не для веб-пакета для создания файла bundle.js. Вы должны рассмотреть поиск документации webpack для получения дополнительной информации https://webpack.js.org/configuration/.

Итак, ваш новый файл конфигурации

const path = require("path");
const webpack = require("webpack");

module.exports = {
  entry: "./src/index.js",
  mode: "development",
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel-loader',
        options: { presets: ['env'] }
      },
      {
        test: /\.css$/,
        use: [ 'style-loader', 'css-loader' ]
      }
    ]
  },
  resolve: { extensions: ['*', '.js', '.jsx'] },
  output: {
    path: path.resolve(__dirname, "dist/"),
    publicPath: "/dist/",
    filename: "bundle.js"
  },
  devServer: {
    contentBase: path.join(__dirname, "public/"),
    port: 3000,
    publicPath: "http://localhost:3000/dist/",
    hotOnly: true
  },
  plugins: [ new webpack.HotModuleReplacementPlugin() ]
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...