         return unless worker {changeFileList, compilers, linters, fileList, @config}
 
       bindWatcherEvents @config, fileList, compilers, linters, watcher, reload, @_startCompilation
-      fileList.on 'ready', => compile @_endCompilation() if @_start
+      watcherReady = false
+      watcher.once 'ready', -> watcherReady = true
+      fileList.on 'ready', => compile @_endCompilation(), watcherReady if @_start
       # Emit `change` event for each file that is included with plugins.
       # Wish it worked like `watcher.add includes`.
       includes.forEach (path) =>

        logger.error error
    else
      logger.info generateCompilationLog startTime, fileList.assets, generatedFiles, disposed

    # If it’s single non-continuous build, close file watcher and
    # exit process with correct exit code.

        process.exit (if logger.errorHappened then 1 else previousCode)

    fileList.initial = false

  fs_utils.write fileList, config, joinConfig, optimizers, startTime, writeCb

