2016-08-05 168 views
1

我的问题是,无论我做什么,我都会在wepack_hmr上得到一个404,我不能为我的生活找出原因可用。热模块替换启用,但不能正常工作http:// localhost:3000/__ webpack_hmr

完整的WebPack配置

var url = 'http://localhost:3000'; 

module.exports = { 

    resolve: { 
     extensions: ['', '.js'] 
    }, 

    entry: ['webpack-hot-middleware/client','./src/client/js/Kindred'], 

    devtool: 'cheap-module-source-map', 

    module: { 
     loaders:[ 
      { 
       test: /\.js$/, 
       exclude: /node_modules/, 
       loader: 'babel', 
       query: {presets: ['es2015', 'react', 'react-hmre', 'stage-0']} 
      }, 
      {test: /\.png$/, loader: "url-loader?limit=100000"}, 
      // Images 
      {test: /\.jpg$/, loader: "file-loader"}, 
      { 
       test: /\.(eot|svg|ttf|woff|woff2)$/, 
       loader: 'file?name=./font/[name].[ext]' 
      }, 
      // Stylesheets 
      { test: /\.scss$/, loader: ExtractTextPlugin.extract('style', 
       [ 
        'css?sourceMap&modules&importLoaders=1', 
        'sass?sourceMap&modules', 
       ] 
      ) }, 
      // Font Definitions 
      { test: /\.svg$/, loader: 'url?limit=65000&mimetype=image/svg+xml&name=public/font/[name].[ext]' }, 
      { test: /\.woff$/, loader: 'url?limit=65000&mimetype=application/font-woff&name=public/font/[name].[ext]' }, 
      { test: /\.woff2$/, loader: 'url?limit=65000&mimetype=application/font-woff2&name=public/font/[name].[ext]' }, 
      { test: /\.[ot]tf$/, loader: 'url?limit=65000&mimetype=application/octet-stream&name=public/font/[name].[ext]' }, 
      { test: /\.eot$/, loader: 'url?limit=65000&mimetype=application/vnd.ms-fontobject&name=public/font/[name].[ext]' } 
     ] 
    }, 

    sassLoader: { 
     includePaths: [ 'src/client/scss' ] 
    }, 

    plugins: process.env.NODE_ENV === 'production' ? [ 
     new ExtractTextPlugin ('app.css', {allChunks: true}), 
     new webpack.optimize.DedupePlugin(), 
     new webpack.optimize.OccurrenceOrderPlugin(), 
     new webpack.optimize.UglifyJsPlugin() 
    ] : [ 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin(), 
     new ExtractTextPlugin("style.css") 
    ], 

    devServer: { 
     hot: true, 
     contentBase: './public' 
    }, 

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

}; 

节点CMD运行

webpack-dev-server --inline --history-api-fallback --port 3000 

当加载了页面

[HMR] Waiting for update signal from WDS... 
home:1 GET http://localhost:3000/__webpack_hmr 
client:22 [WDS] Hot Module Replacement enabled. 

我花了它的运行,但它不是:/

+1

Webpack hmr是一个棘手的恶魔得到正常工作。它是不够愉快的,我可以为你做。我建议你检查一个可用的反应样板包括它,并寻​​找你的配置之间的差异。https://github.com/gaearon/react-transform-b​​oilerplate – John

+0

哈哈欢呼约翰:)我感谢帮助和洞察,这可能会变得丑陋。 –

+0

对不起,我通常喜欢帮助人们解决反应相关的问题,不介意在编写代码时跳跃,但webpack配置是最糟糕的..大声笑 – John

回答

1

好只是所以它很容易让人们看到我做了什么得到它在这里工作是:

我认为这是我更容易彻底清除SCSS并开箱即用的CSS模块。这似乎有很大帮助。

我用[email protected]:christianalfoni/webpack-express-boilerplate.git来帮助我指导自己。知道我有一个工作的东西,实际上教会了我比在webpack之前学到的更多的东西。正如你可以猜到这不是很多:D

另一个主要的变化,真正帮助改变路径并不令人意外。但这些都是相对于output.path之前的路径性别而言的,但我认为这是相对于wepack.config.js而言的,并不是说从那里开始,所有内容都将被视为文档根目录,即使对于html和css也是如此。

**关键部分:) **

我也有更新我的快递成立,因为我没有给它一个express.static路径...哦,我的愚蠢,我怎么会错过这样一个基本事情..所以:

快速

app.use(express.static(__dirname + '/public/')); //Don't forget me :(

决赛CSS

/* Webfont: Lato-Black */@font-face { 
    font-family: 'LatoBlack'; 
    src: url('/font/Lato-Black.eot'); /* IE9 Compat Modes */ 
    src: url('/font/Lato-Black.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 
     url('/font/Lato-Black.woff2') format('woff2'), /* Modern Browsers */ 
     url('/font/Lato-Black.woff') format('woff'), /* Modern Browsers */ 
     url('/font/Lato-Black.ttf') format('truetype'); 
    font-style: normal; 
    font-weight: normal; 
    text-rendering: optimizeLegibility; 
} 

Wekpack.config

'use strict'; 
var path = require('path'); 
var webpack = require('webpack'); 
var HtmlWebpackPlugin = require('html-webpack-plugin'); 
var ExtractTextPlugin = require('extract-text-webpack-plugin'); 
var qs = require('querystring'); 
var precss = require('precss'); 
var autoprefixer = require('autoprefixer'); 
var stripInlineComments = require('postcss-strip-inline-comments'); 

module.exports = { 
    devtool: 'eval-source-map', 
    // resolve: { modulesDirectories: ['node_modules'], extension: ['', '.js', '.css'] }, 
    entry: [ 
     'webpack-hot-middleware/client?reload=true', 
     path.join(__dirname, 'src/client/js/Kindred') 
     // path.join(__dirname, 'app/main') 
    ], 
    output: { 
     path: path.join(__dirname, '/public/'), 
     filename: '[name].js', 
     publicPath: '/' 
    }, 
    plugins: [ 
     new HtmlWebpackPlugin({ 
      template: 'public/index.tpl.html', 
      inject: 'body', 
      filename: 'index.html' 
     }), 
     new webpack.optimize.OccurenceOrderPlugin(), 
     new webpack.HotModuleReplacementPlugin(), 
     new webpack.NoErrorsPlugin(), 
     new webpack.DefinePlugin({ 
      'process.env.NODE_ENV': JSON.stringify('development') 
     }) 
    ], 
    module: { 
     loaders: [ 
      { 
       test: /\.jsx?$/, 
       exclude: /node_modules/, 
       loader: 'babel', 
       query: {"presets": ["react", "es2015", "stage-0", "react-hmre"]} 
      }, { 
       test: /\.json?$/, 
       loader: 'json' 
      }, 
      { 
       test: /\.jpg$/, loader: "file-loader" 
      }, 
      { 
       test: /\.css$/, 
       loaders: [ 
        'style-loader', 
        'css-loader?importLoaders&' + qs.stringify({ 
         modules: true, 
         importLoaders: 1, 
         localIdentName: '[path][name]-[local]' 
        }), 
        'postcss-loader?parser=postcss-scss' 
       ] 
      }, 
      // Font Definitions 
      { test: /\.svg$/, loader: 'url?limit=65000&mimetype=image/svg+xml&name=font/[name].[ext]' }, 
      { test: /\.woff$/, loader: 'url?limit=65000&mimetype=application/font-woff&name=font/[name].[ext]' }, 
      { test: /\.woff2$/, loader: 'url?limit=65000&mimetype=application/font-woff2&name=font/[name].[ext]' }, 
      { test: /\.[ot]tf$/, loader: 'url?limit=65000&mimetype=application/octet-stream&name=font/[name].[ext]' }, 
      { test: /\.eot$/, loader: 'url?limit=65000&mimetype=application/vnd.ms-fontobject&name=font/[name].[ext]' } 
     ] 
    }, 
    postcss: function (webpack) { 
     return [ 
      stripInlineComments 
      , precss 
      , autoprefixer 
      , require('postcss-simple-vars') 
      , require('postcss-nested' 
      , autoprefixer({browsers: ['last 2 versions']})) 
     ]; 
    } 
}; 

其实我已经贴了同样的回答两次。但他们都有关系。可悲的是:(

相关问题