2015-03-26 13 views
19

tôi đã thiết lập thành công WebPack - nó biên dịch babel tôi và SCSS tập tin tốt, và tôi đã nhận các chức năng đồng hồ để làm việc tốt. Nhưng tôi cũng muốn làm việc với các mô-đun thay thế nóng - và tôi đang gặp khó khăn để nó đi. Khi tôi tải máy chủ dev trong trình duyệt của tôi, nó hiển thị Cannot resolve module 'webpack/hot/dev-server'. cấu hình của tôi trông như thế này:Không thể có được webpack nóng mô-đun thay thế để làm việc

import webpack from 'webpack'; 
import wpServer from 'webpack-dev-server'; 

var compiler = webpack({ 
    entry: [ 
     './src/core.js', 
     'webpack/hot/dev-server' 
    ], 
    output: { 
     path: outPath, 
     filename: '[name].js' 
    }, 
    resolveLoader: { root: path.join(MODULE_PATH, "node_modules") }, 
    module: { 
     loaders: [ 
      { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' }, 
      { test: /\.scss$/, loader: "style!css!sass" } 
     ] 
    }, 
    plugins: [new webpack.HotModuleReplacementPlugin()], 
    watch: true 
}); 

var server = new wpServer(compiler, { 
    contentBase: outPath, 
    hot: true, 
    quiet: false, 
    noInfo: false, 
    lazy: true, 
    filename: "main.js", 
    watchDelay: 300, 
    headers: { "X-Custom-Header": "yes" }, 
    stats: { colors: true }, 
}); 
server.listen(8080, "localhost", function() {}); 

và index.html của tôi chứa:

<script src="http://localhost:8080/webpack-dev-server.js"></script> 
<script src='main.js'></script> 

Có ai có bất kỳ ý tưởng?

+1

Bạn không thể kết hợp chế độ lười biếng webpack-dev-server với HMR. Chế độ lười chỉ biên dịch lại khi có yêu cầu HTTP. HMR dựa vào người theo dõi để biên dịch lại sự thay đổi. Sử dụng 'lazy: false' thay vào đó hoặc chỉ bỏ qua nó. –

+0

Tôi đã đăng một giải thích nhỏ về cách thức hoạt động của HMR và những gì cần thiết để làm cho nó hoạt động: http://stackoverflow.com/questions/37016683/what-aspect-of-hot-module-replacement-is-this-article- cho/37022884 # 37022884 –

Trả lời

14

Nếu bạn đã cài đặt webpack-dev-server trên toàn cầu, là npm install webpack-dev-server -g, hãy thử cài đặt cục bộ (chỉ cần xóa tùy chọn -g).

tôi giải quyết vấn đề này bằng cách làm như vậy.

+0

Dường như tùy chọn '--hot' đang tìm kiếm một số tệp cục bộ. Có thể có một cách để nói rằng chúng được cài đặt trên toàn cầu. Nguyên nhân cài đặt dev-server cục bộ và toàn cầu cảm thấy khó xử. –

+2

@yvesamsellem Tôi cho rằng vấn đề này liên quan đến cách 'webpack-dev-server' xác định thư mục cơ sở của dự án của bạn. Tôi đã kiểm tra các tài liệu và có vẻ như tiện ích hiển thị tùy chọn '--content-base' để ghi đè lên mặc định. Dù bằng cách nào, cài đặt nó như là một 'devDependency' cục bộ nên là cách tiếp cận ưa thích để duy trì sự nhất quán trên các nền tảng. –

4

Tôi chạy vào một vấn đề tương tự. Tôi đã sửa nó bằng cách cài đặt webpack chính nó cục bộ. Để cài đặt webpack như một sự phụ thuộc dev địa phương: npm i -D webpack

6

QUAN TRỌNG


Nếu bạn đang sử dụng [email protected] chắc chắn rằng bạn cài đặt

[email protected] 

Chỉ cần chạy npm install webpack-dev-server sẽ không hoạt động tốt với webpack 2.

Điều này có thể chỉ đúng trong khi phiên bản 2 vẫn đang trong giai đoạn thử nghiệm.


Tôi cũng cố gắng làm việc này vì tài liệu về chủ đề này rất bị phân mảnh.

Tìm thấy ví dụ làm việc đơn giản này:

https://github.com/ahfarmer/webpack-hmr-starter-dev-server-api

Mã là khá tự giải thích.

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