2016-07-15 88 views
10

Это, похоже, обычная проблема, но после нескольких дней активных поисков я не нашел решения, которое работает в моем случае.Webpack --watch не работает в Windows (и webpack-dev-server)

  • Windows7-x64
  • узел: 6.3.0-64 (также пытались узел-V4.4.7-x64)
  • НПМ: 3.10.3
  • WebPack: 1.13.1
  • возвышенного текст (не Vim)

Прежде всего, я не могу установить fsevents на окна, которые могут быть проблемы, потому что это библиотека для просмотра на OS X.

D:\file>npm install webpack 
[email protected] D:\file 
`-- [email protected] 

npm WARN optional Skipping failed optional dependency /chokidar/fsevents: 
npm WARN notsup Not compatible with your operating system or architecture: [email protected] 

Так что, если ваши --watch работы на окнах, скажите, пожалуйста, есть ли у вас такая же проблема с пропуская fsevents при установке Webpack ?


Во-вторых, webpack --watch делает компиляции файла, но он не смотрит на всех.

E.g. если я использую стилус часы, то это фактически блокирует мою командную строку, пока не будет нажата CTRL + C

D:\file>stylus -w style.styl 
watching C:/Users/... 
compiled style.css 
watching style.styl 
_ 

И только после того, как Ctrl + C будет разблокировать мою клавиатуру.

^CTerminate batch job (Y/N)? y 

stylus-watch

Хотя webpack -w совершенно иная. Это не просто компиляция файла об изменениях, но он также не просматривается вообще. Я имею в виду, что после ввода команды webpack --watch он компилирует файл один раз, но он не блокирует мою клавиатуру и поэтому позволяет мне написать еще одну команду.

D:\webpa>webpack main.js bundle.js 
D:\webpa>webpack -w main.js bundle.js 
D:\webpa>webpack --watch main.js bundle.js 
D:\webpa> 

webpack-watch

То же самое с webpack-dev-server - он начинает сервер, но затем сразу же завершает его.

D:\webpa>webpack-dev-server --hot --inline 
http://localhost:8080/ 
webpack result is served from/
content is served from D:\webpa 
D:\webpa> 

Похоже, что проблема не с webpack.config.js, потому что он не смотрит даже с помощью команды webpack --watch main.js bundle.js, но в любом случае, вот мой основной конфигурации.

var webpack = require('webpack'); 
module.exports = { 
    context: __dirname, 
    entry: "./main.js", 
    output: { 
    path: __dirname, 
    filename: "bundle.js" 
    }, 
}; 

И я пробовал много других вариантов:

var webpack = require('webpack'); 
var path = require('path'); 
var entry = path.join(__dirname, "main.js"); 
var WebpackNotifierPlugin = require('webpack-notifier'); 

module.exports = { 
    context: __dirname, 
    entry: entry, 
    output: { 
    path: __dirname, 
    filename: "bundle.js" 
    }, 
    resolve: {root: [__dirname]}, 
    resolve: { fallback: path.join(__dirname, "node_modules") }, 
    resolveLoader: { fallback: path.join(__dirname, "node_modules") }, 
    plugins: [ 
    new webpack.OldWatchingPlugin(), 
    new WebpackNotifierPlugin(), 
    new webpack.ResolverPlugin(
     new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"]) 
    ), 
    new webpack.optimize.CommonsChunkPlugin('vendors', 'vendors/js/applibs.js'), 
    new webpack.optimize.DedupePlugin() 
    ] 
}; 

Как я уже говорил, проблема, как представляется, не в webpack.config.JS


Я также пытался что-то вроде:

echo fs.inotify.max_user_watches=524288 
webpack-dev-server --content-base ./ --port 9966 --hot --inline 
webpack --watch --watch-poll 
rename/move/create new folder, reinstall node.js and webpack 

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

  • У вас возникли проблемы с установкой fsevents?
  • Ваша команда webpack --watch блокирует вашу клавиатуру и фактически просматривает, но просто не компилирует файлы после изменений? Или он заканчивал смотреть сразу, как в моем случае?
  • Любые другие предложения по использованию, кроме --watch и webpack-dev-server?

Спасибо!

+0

fsevents может быть l как отдельная вещь. Я получаю те же предупреждения в Windows, и это не проблема, поэтому вы можете это устранить. – mjohnsonengr

+3

Мне также повезло с добавлением 'watchOptions: { aggregateTimeout: 300, опрос: 1000 },' в конфигурацию моего dev-сервера. Я должен был фактически создать конфигурацию сервера dev, а не просто полагаться на CLI webpack-dev-server. См. Https://webpack.github.io/docs/configuration.html#devserver – mjohnsonengr

+0

@mjohnsonengr, спасибо за вашу помощь! Да, я забыл упомянуть, что я также пробовал 'watchOptions: {aggregateTimeout: 300, poll: 1000},', но это не сработало. Можете ли вы поделиться своей конфигурацией webpack.config.js и dev-сервера? И, кстати, ваш '--watch' работает правильно с самого начала? – SamAI

ответ

5

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

У вас не может быть путь с "(" или ")" в нем, потому что зависимость is-glob думает, что это glob, если вы это сделаете. Если вы должны поместить ваш проект в пути с «(» (например, Program Files (x86)), то вы должны добавить что-то вроде этого, чтобы ваш модуль-Глоб в node_modules:

if (typeof str === 'string' && str.indexOf('Program Files (x86)') > -1) 
    return false 
+0

Другие специальные символы также могут быть проблемой. Восклицательный знак также был проблемой в моем случае. Я просто должен был создать другой каталог с символами '[a_z_' 'и работать в этом. – Nux

1

Посмотрите, используя fswatch. Я нахожусь в том же беспорядке. Windows/Linux не поддерживает fsevents рассматривает его исключительно для OSX. поддержка Linux, например, через inotify.

кажется fswatch обеспечивает файловую систему мониторинга кросс-платформенной, так что вы должны быть установлены, если вы используете ваш компьютер для окон.