异步WebPack配置

3

我无法让这个工作。请帮忙 :)

(文档上说webpack可以处理Promises)

以下代码有效:

var compiler = webpack(webpackConfig)

但是使用Promise时出现错误。

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

我得到的错误是:
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.

我做错了什么?


1
我认为文档的意思是webpack CLI工具将允许从配置文件返回promises。如果您正在使用API,则在创建编译器之前自行解决这些问题非常简单。 - robertklep
1个回答

4

webpack CLI 负责处理 Promise 配置。如果你使用 Node API,你需要自己处理。

在你的示例中,应该是这样的:

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

这个想法是为了能够在配置文件中轻松地进行异步处理,而在使用Node API时,这个问题本来就不存在。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接