Webpack-dev-server menyajikan daftar direktori, bukan halaman aplikasi


93

masukkan deskripsi gambar di sini

Saya hanya dapat melihat aplikasi sebenarnya di bawah /public.

Konfigurasi di webpack.config.jsbawah ini:

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()
  ]

};

Hierarki proyek adalah:

  • aplikasi

    • js
  • node_modules

  • publik

    • css

    • img

    bundle.js

    index.html

  • package.json

  • webpack.config.js

Bagaimana saya bisa memodifikasi untuk memastikan http://localhost:8080/entri itu untuk aplikasi itu sendiri?

Jawaban:


79

Jika Anda menggunakan server dev webpack, Anda dapat memberikan opsi untuk digunakan /publicsebagai direktori dasar.

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

Lihat dokumen konfigurasi webpack , dan secara khusus dokumen server webpack dev untuk opsi selengkapnya dan informasi umum.


1
Terima kasih atas jawaban ini, saya tidak terjebak. Juga terima kasih telah memposting tautan ke kedua dokumentasi tersebut.
Chris Schmitz

3
Bagaimana dengan webpack 2? Saya membaca dokumen dan tidak bisa memahaminya sendiri.
mightyiam

@mightyiam Anda akan ingin menyetel properti publicPath juga. Saya akan memperbarui untuk menjawab untuk memasukkan itu.
Sandal

1
Saya tidak tahu bagaimana orang bisa mengetahui hal ini dari dokumentasi. Terima kasih. Mungkin pertimbangkan untuk menulis ulang beberapa dokumentasi tentang properti tersebut?
mightyiam

17

Anda juga dapat menambahkan --content-basebendera ke skrip start-up Anda, misalnya

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

4

Dalam kasus saya, saya salah mengeja 'index.html'saat menyiapkan HTMLWebpackPlugin. Periksa kembali nama file Anda jika Anda menggunakan plugin ini.

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

ini membantu saya untuk memperbaiki fakta bahwa saya mendapatkan HTML yang dibuat secara otomatis oleh webpack. Sekarang, dengan mengatur templateparameter ini saya dapat menentukan html saya sendiri tanpa masalah. Terima kasih banyak!
danivicario

1

Saya tidak sengaja menghapus index.html dan kemudian saya hanya mendapatkan daftar direktori.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.