2017-04-10 81 views
3

我不能得到这个工作。请帮助:)异步webpack配置

(该documentation说的WebPack可以处理的承诺)

这工作:

var compiler = webpack(webpackConfig)

但随着一个承诺我得到的错误

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工具将允许从配置文件返回承诺。如果您使用的是API,在创建编译器之前自行解决这些问题是微不足道的。 – robertklep

回答

2

这是处理Promise配置的webpack CLI。如果你使用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 
    }); 

这样做的想法是能够做到在配置异步处理而不麻烦,使用节点API当它不存在这个问题第一个地方。