6

Tôi đang gặp một chút rắc rối khi tải bộ nạp webpack phản ứng nóng để hoạt động chính xác.React + Webpack HMR đang làm mới trang (không tải nóng)

Khi tôi tải trang tôi nhận được sau khi tôi mong chờ:

[HMR] Đang chờ tín hiệu cập nhật từ WDS ...
[WDS] Mô-đun thay thế nóng kích hoạt.

Nhưng khi tôi lưu thay đổi, trang tự động làm mới trình duyệt (thay vì thay thế HMR).

//webpack.config.js 

{ 
    entry: { 
    client: 'webpack-dev-server/client?http://localhost:8786', // WebpackDevServer host and port 
    app: "./HelloWorld.tsx" 
    }, 
    devtool: process.env.WEBPACK_DEVTOOL || 'cheap-module-source-map', 
    output: { 
     path: path.join(__dirname, 'dist'), 
     filename: '[name].entry.js' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.ts(x?)$/, 
     loaders: ['react-hot', 'babel-loader?cacheDirectory=true,presets[]=es2015,presets[]=react', 'ts-loader'] 
     } 
    ] 
    }, 
    devServer: { 
     contentBase: "./dist", 
    port:8786 
    }, 
    plugins: [ 
     new webpack.NoErrorsPlugin() 
    ] 
} 

lệnh: webpack-dev-server --hot --inline

trên một sidenote thú vị nếu tôi sử dụng babel-preset-react-hmre mọi thứ hoạt động như mong đợi. (Tuy nhiên tôi không thực sự muốn sử dụng điều này vì nó có vẻ ít được hỗ trợ hơn bộ nạp nóng phản ứng thích hợp).

+0

Nếu bạn đang sử dụng máy chủ devserver từ dòng lệnh có nội tuyến nóng +, bạn cũng không nên chỉ định nó trong cấu hình –

+0

@dominictobias của mình có thiếu gì đó không? Afaik im không chỉ định hot hoặc inline trong config. –

+0

Bạn có 'client: 'webpack-dev-server/client? Http: // localhost: 8786',' trong đó, không chắc chắn nếu điều đó sẽ giúp ích nhưng bạn không được phép thêm nó khi sử dụng các tùy chọn đó với dev máy chủ –

Trả lời

10

Tôi vừa gặp sự cố này. Một vài điều:

Để giúp gỡ lỗi vấn đề cụ thể của bạn, hãy thử bật "Bảo tồn nhật ký" (trong công cụ dành cho nhà phát triển Chrome). Điều này sẽ duy trì các nhật ký giao diện trên các lần làm mới trang, vì vậy bạn sẽ ít nhất có thể thấy bất kỳ thư nào mà webpack-dev-server đang ghi nhật ký trước khi nó kích hoạt làm mới.

"Preserve log" option in Chrome devtools

Trong trường hợp webpack-dev-máy chủ của tôi là làm mới bởi vì tôi đã không chọn tham gia vào HMR trong tập tin nhập của tôi js. Thêm dòng sau vào file giải quyết vấn đề này:

// Opt-in to Webpack hot module replacement 
if (module.hot) module.hot.accept() 

Để biết chi tiết về các module.hot API webpack HMR docs là rất hữu ích.

Các vấn đề liên quan