Webpack-dev-server liefert eine Verzeichnisliste anstelle der App-Seite


89

Geben Sie hier die Bildbeschreibung ein

Ich kann nur die aktuelle App unter sehen /public.

Die Konfigurationen in webpack.config.jssind unten:

var path    = require('path');
var webpack = require('webpack');

module.exports = {

  entry: [
    'webpack-dev-server/client?http://localhost:8080',
    'webpack/hot/only-dev-server',
    './app/js/App.js'
],

  output: {
    path: path.join(__dirname, 'public'),
    filename: 'bundle.js',
    publicPath: 'http://localhost:8080'
  },

  module: {
    loaders: [
      {
        test: /\.js$/,
        loaders: ['react-hot', 'babel-loader'],
        exclude: /node_modules/
      }
     ]
   },

  plugins: [
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  ]

};

Die Projekthierarchie lautet:

  • App

    • js
  • Knotenmodule

  • Öffentlichkeit

    • CSS

    • img

    bundle.js

    index.html

  • package.json

  • webpack.config.js

Wie kann ich Änderungen vornehmen, um sicherzustellen, dass der http://localhost:8080/Eintrag für die Anwendung an sich bestimmt ist?

Antworten:


76

Wenn Sie den Entwicklungsserver von webpack verwenden, können Sie Optionen übergeben, die /publicals Basisverzeichnis verwendet werden sollen.

devServer: {
    publicPath: "/",
    contentBase: "./public",
    hot: true
},

Weitere Optionen und allgemeine Informationen finden Sie in den Webpack-Konfigurationsdokumenten und insbesondere in den Webpack-Entwicklungsserverdokumenten .


1
Danke für diese Antwort, sie hat mich losgelassen. Vielen Dank auch für die Veröffentlichung der Links zu beiden Dokumentationen.
— Chris Schmitz

3
Was ist mit Webpack 2? Ich habe die Dokumente gelesen und konnte es selbst nicht herausfinden.
— Mayyiam

@mightyiam Sie möchten auch die publicPath-Eigenschaft festlegen. Ich werde aktualisieren, um zu antworten, um das einzuschließen.
— Sandalen

1
Ich weiß nicht, wie jemand das aus der Dokumentation herausfinden könnte. Danke dir. Vielleicht möchten Sie einen Teil der Dokumentation zu diesen Eigenschaften neu schreiben?
— Mayyiam

17

Sie können das --content-baseFlag auch zu Ihrem Startskript hinzufügen , z

    "scripts": {
        "start:dev": "webpack-dev-server --inline --content-base ./public"
    }

4

In meinem Fall habe ich falsch geschrieben, 'index.html'als ich das eingerichtet habe HTMLWebpackPlugin. Überprüfen Sie Ihre Dateinamen, wenn Sie dieses Plugin verwenden.

var HTMLWebpackPlugin = require('html-webpack-plugin');
var HTMLWebpackPluginConfig = new HTMLWebpackPlugin({
  template: __dirname + '/app/index.html',
  filename: 'index.html',
  inject: 'body'
});

Dies half mir, die Tatsache zu beheben, dass ich ein automatisch generiertes HTML per Webpack erhielt. Durch Einstellen dieses templateParameters kann ich jetzt problemlos mein eigenes HTML angeben. Vielen Dank!
— Danivicario

1

Ich hatte versehentlich index.html entfernt und dann nur die Verzeichnisliste erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.