3

I can't get this to work. Please help :)

(The documentation says webpack can handle Promises)

This works:

var compiler = webpack(webpackConfig)

But with a promise I get errors

var compiler = webpack(new Promise(function(resolve, reject) {
  setTimeout(() => { resolve(webpackConfig) }, 100);
}));

The error I get is:

C:\path\node_modules\webpack\lib\webpack.js:19
                throw new 
WebpackOptionsValidationError(webpackOptionsValidationErrors);
                ^

WebpackOptionsValidationError: Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
 - configuration misses the property 'entry'.
   object { <key>: non-empty string | [non-empty string] } | non-empty string | [non-empty string] | function
   The entry point(s) of the compilation.
    at webpack (C:\path\node_modules\webpack\lib\webpack.js:19:9)
    at Object.<anonymous> (C:\path\build\dev-server.js:27:16)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)
    at startup (bootstrap_node.js:144:9)
    at bootstrap_node.js:467:3
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

What am I doing wrong?

1
  • 1
    I think that the documentation means that the webpack CLI tool will allow for promises to be returned from the configuration file. If you're using the API, it's trivial to resolve those yourself before creating a compiler. Commented Apr 10, 2017 at 17:13

1 Answer 1

4

It's the webpack CLI that handles the Promise configuration. If you're using the Node API you need to handle it yourself.

In your example this would be:

const configPromise = new Promise(function(resolve, reject) {
  setTimeout(() => { resolve(webpackConfig) }, 1000);
});

configPromise
  .then(webpack) // Passes the config to webpack
  .then(compiler => {
    // Do the work with the compiler
  });

The idea of this is to be able to do the asynchronous processing in the config without a hassle, that problem doesn't exist when using the Node API in the first place.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.