おはよう、Webpack Hot Reloader + ReactJSとBabel
webpackのホットリロード機能を実装するのに少し問題があります。私は自分の開発環境を自分で設定する代わりに、他人の定型文を取って実際には何も学習しないようにしています。端末では、私の出力ファイルbundle.js
が私のエクスプレスサーバ上に構築されているのがわかりますが、そのサーバとクライアントにレンダリングされているものとの間に切断があります。私はこの投稿がかなり長いことを知っていますが、私はできるだけ多くの情報を提供したいと思います。
まず私のwebpack.config.js
ファイル:["webpack-hot-middleware/src","./src/main.js"]
var webpack = require("webpack");
var path = require("path");
module.exports = {
devtool: "source-map",
entry: ["./src/main.js"],
output: {
path: path.join(__dirname, "_build"),
filename: "bundle.js",
publicPath: "/static/"
},
plugins:[
new webpack.HotModuleReplacementPlugin()
],
module:{
loaders: [
{
test: /\.js$/,
include: path.join(__dirname, "src/"),
loader: "babel-loader"
},
{
test: /\.css$/,
include: path.join(__dirname, "src/stylesheets"),
loaders: ["style", "css", "sass"]
}
]
}
}
一つは、私が印象の下に私のentry
キーは次のようになります値として配列を持つべきだということです
しかし、私はこのエラーを取得する:ときに私が働いている他のすべての例
ERROR in multi webpack-hot-middleware/src ./src/main.js
Module not found: Error: Can't resolve 'webpack-hot-middleware/src' in '/Users/MMac/Freelance/slots'
私は今、なぜこれが起こっているしていませんこれを使用してオフにします。
第二には、ここで再び、これは私がのオフに働いている他の例によると「正しく」に設定されている私のdevServer.js
var path = require("path");
var express = require("express");
var PORT = process.env.PORT || 7887;
var webpack = require("webpack");
var config = require("./webpack.config");
var app = express();
var compiler = webpack(config);
var bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
app.use(express.static(path.join(__dirname + "/_build")));
app.use(require('webpack-hot-middleware')(compiler));
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname, 'index.html'));
});
app.listen(PORT, function(err) {
if (err) {
console.log(err);
return;
}
console.log('Listening at ' + PORT);
});
です。
最後に私のpackage.json
{
"name": "slots",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"watch": "./node_modules/.bin/webpack -d"
},
"license": "ISC",
"dependencies": {
"babel-core": "^6.21.0",
"babel-loader": "^6.2.10",
"babel-plugin-transform-object-rest-spread": "^6.22.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-react": "^6.16.0",
"body-parser": "^1.16.0",
"css-loader": "^0.26.1",
"express": "^4.14.0",
"node-sass": "^4.3.0",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-redux": "^5.0.2",
"react-router": "^3.0.1",
"react-router-redux": "^4.0.7",
"react-transform-hmr": "^1.0.4",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0",
"sass-loader": "^4.1.1",
"style-loader": "^0.13.1",
"webpack": "^2.2.1",
"webpack-dev-middleware": "^1.9.0",
"webpack-hot-middleware": "^2.15.0"
}
}
この記事を見ているのおかげで、私は、任意の有用なフィードバックを感謝しています。
これはエラーを処理しました。私は午前中にこれが成功せずに働くように努力してきました。少なくとも私のdevServerから送信されているコードは壊れません。基本的には、これで私のwebpackコマンドを再実行してbundle.jsファイルを作成する必要がなくなります。代わりに、私は変更を加えるたびに作成され、ブラウザを更新する必要があります。私は本当にブラウザをリフレッシュする必要がなくなりたいと思っています。 – m00saca
私はpublicPath: "/静的/"あなたの設定から一緒に削除しようとすると、それが今すぐ自動更新されているかどうかを確認します。 –
私の答えを更新しました。これはあなたの問題を解決するはずです。 –