2016-08-21 14 views
7

cấu trúc tập tin của tôi là:webpack-dev-server tải lại nóng không làm việc

dist 
    css 
    style.css 
    index.html 
    js 
    bundle.js 
src 
    css 
    style.css 
    index.html 
    js 
    main.js 
node_modules 
webpack.config.js 
package.json 

webpack.config.js tôi trông như thế:

module.exports = { 
    entry: './src/js/main.js', 
    output: { 
     path: __dirname, 
     filename: './dist/js/bundle.js' 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.js$/, 
       exclude: /(node_modules)/, 
       loader: 'babel', 
       query: { 
        presets: ['es2015'] 
       } 
      }, 
      { 
       test: /\.vue$/, 
       loader: 'vue' 
      } 
     ] 
    } 
}; 

tôi chạy:

webpack-dev-server --content-base dist --hot 

Và nó xây dựng và có vẻ như nó đang hoạt động. localhost: 8080 cho thấy kết quả mong đợi nhưng tải lại không hoạt động. Khi tôi thay đổi một tập tin tôi có thể thấy trong thiết bị đầu cuối mà việc xây dựng lại đang diễn ra nhưng không có gì xảy ra trong trình duyệt. Tôi có thiếu thứ gì đó trong cấu hình không?

Trả lời

9

Khi sử dụng webpack-dev-server, nó được xây dựng tất cả các file trong nội bộ và không nhổ chúng ra vào đường dẫn đầu ra của bạn. Chạy webpack một mình, không có máy chủ dev, thực hiện biên dịch thực sự thành đĩa. Máy chủ dev thực hiện mọi thứ trong bộ nhớ để tăng tốc độ biên dịch lại rất nhiều.

Để khắc phục vấn đề tải lại nóng của bạn, thiết lập các cơ sở nội dung vào thư mục nguồn của bạn và cho phép inline-mode

Giống như vậy:

webpack-dev-server --content-base src --hot --inline 
+0

Cảm ơn Mario, điều này đã làm các trick! – alberto2000

+0

Tôi không hiểu. Vì vậy, nơi index.html thêm tập lệnh với bundle.js hoặc cách thức hoạt động của tập lệnh này? Nếu nó trỏ tới nguồn, tôi sẽ lấy cấu trúc thư mục của ứng dụng của tôi tại localhost: 8080 –

+0

@JuanSolano, thẻ '

0

Hãy thử điều này:

Trong file package.json của bạn, xóa các dòng có chứa "test" "echo \"Error: no test specified\" && exit 1" dưới kịch bản phản đối, và thay thế bằng:

... 
"scripts": { 
    "start": "webpack-dev-server --hot" 
    }, 

... 

Sau đó khởi động lại dự án của bạn, chỉ cần sử dụng npm start.

Điều này làm việc cho tôi khi tôi gặp sự cố này.

Chỉnh sửa: Bạn có thể chia sẻ tệp package.json của mình không?

Hãy thử thêm này để webpack.config.js cũng

devServer: { 
    inline: true, 
    port: 3000, 
    hot: true 
}, 
+0

tôi chạy máy chủ dev trực tiếp từ CLI thay vì sử dụng một kịch bản npm, mà không nên tạo nên sự khác biệt nào cả ... Tôi nghĩ rằng nó có liên quan đến cấu trúc tệp của tôi và tôi có thể không sử dụng param chính xác -content-base – alberto2000

+0

Xem câu trả lời được cập nhật ở trên. – hammerabi

1

--inline --hot không phải là một vấn đề đối với tôi

Nếu bạn đang sử dụng redux có thể thử điều này.

Vì một số lý do ngẫu nhiên redux-devtools không cho phép tải lại nóng cho tôi. Hãy thử xóa nó khỏi cấu phần gốc và cấu hình redux compose.

Lưu ý: Sử dụng Redux phần mở rộng trình duyệt devtool với cấu hình này trong cấu hình cửa hàng của bạn: window.devToolsExtension ? window.devToolsExtension() : f => f

Ngoài ra, phải đọc: https://medium.com/@rajaraodv/webpacks-hmr-react-hot-loader-the-missing-manual-232336dc0d96#.ejpsmve8f

Hoặc thử nóng reload 3: dụ: https://github.com/gaearon/redux-devtools/commit/64f58b7010a1b2a71ad16716eb37ac1031f93915

7

gì làm việc cho tôi là viết <script src="bundle.js"> và không phải <script src="dist/bundle.js"> trong tệp index.html của tôi.

// index.html 
<script src="bundle.js"></script>  // works 
<script src="dist/bundle.js"></script> // doesn't work! 

Giữ dist/bundle.js như các tập tin đầu ra hoạt động hoàn hảo tốt nếu bạn chỉ cần xây dựng nó bằng cách sử webpack. Nhưng khi sử dụng webpack-dev-server, tệp tĩnh đã có trong hệ thống tệp vẫn tiếp tục được phân phát và không phải là thay thế nóng mới nhất. Có vẻ như webpack-dev-server bị nhầm lẫn khi thấy dist/bundle.js trong tệp html và không thay thế nóng, mặc dù webpack.config.js được định cấu hình cho đường dẫn đó.

0

Kiểm tra giao diện điều khiển các bản ghi của bạn nếu nó có dưới đây lỗi sau đó thêm CORS để webpack tập tin máy chủ dev của bạn

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin react hot reload 

Lý tưởng nhất là thêm bên dưới mục trong bạn dev máy chủ js

headers: { "Access-Control-Allow-Origin": "*" }, 
Các vấn đề liên quan