2015-03-26 8 views
19

Я успешно установил WebPack - он очень хорошо компилирует мои файлы babel и SCSS, и я получил функциональность часов, чтобы нормально работать. Но я также хотел бы работать с Hot Mod Replacement - и у меня возникают трудности с этим. Когда я загружаю сервер dev в моем браузере, он показывает Cannot resolve module 'webpack/hot/dev-server'. Моя конфигурация выглядит следующим образом:Невозможно получить замену модуля hotpackpack для работы

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() {}); 

и мой index.html содержит:

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

Кто-нибудь есть какие-нибудь идеи?

+1

Вы не можете объединить ленивый режим webpack-dev-сервера с HMR. Ленточный режим перекомпилируется только при запросе HTTP. HMR полагается на наблюдателей, которые перекомпилируют изменения. Вместо этого используйте 'lazy: false' или просто опустите его. –

+0

Я опубликовал небольшое объяснение о том, как работает HMR и что требуется для его работы: http://stackoverflow.com/questions/37016683/what-aspect-of-hot-module-replacement-is-this-article- for/37022884 # 37022884 –

ответ

14

Если вы установили webpack-dev-server глобально, то есть npm install webpack-dev-server -g, попробуйте установить его локально (просто удалите опцию -g).

Я решил эту проблему, сделав это.

+0

Кажется, что опция '--hot' ищет локальные файлы. Возможно, есть способ сказать, что они установлены во всем мире. Причина установки dev-сервера локально и глобально кажется неудобным. –

+2

@yvesamsellem Я бы предположил, что эта проблема связана с тем, как «webpack-dev-server» определяет базовый каталог вашего проекта. Я проверил документы, и похоже, что утилита предоставляет опцию '--content-base' для переопределения значения по умолчанию. В любом случае, установка его как локальной 'devDependency' должна быть предпочтительным подходом для поддержания согласованности между платформами. –

4

У меня возникла аналогичная проблема. Я исправил его, установив webpack сам по себе. Чтобы установить Webpack как локальную зависимость Dev: npm i -D webpack

6

ВАЖНО


Если вы используете [email protected] убедитесь, что вы установите

[email protected] 

Просто бег npm install webpack-dev-server не будет хорошо играть с webpack 2.

Это, вероятно, будет только в том случае, если версия 2 все еще находится в бета-версии.


Я также пытался получить эту работу, поскольку документация по этой теме очень фрагментирована.

Найдено этот простой рабочий пример:

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

Кодекс говорит само за себя.

 Смежные вопросы

  • Нет связанных вопросов^_^