Setting up Async webpack
I can't seem to get this to work. Please, help:)
(the documentation says webpack can handle Promises)
It 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 am getting:
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?
+3
source to share
1 answer
This is the webpack CLI that handles the Promise configuration. If you are 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 is to be able to do asynchronous processing in the config without issue, this issue doesn't arise when using the Node API in the first place.
+2
source to share