2017-04-02 24 views
0

我試圖以下列方式執行webpack導出。我試圖將異步轉換爲同步(關於fs.readdir)以獲取目錄中的全部文件。output.filename是必需的webpack

const webpack = require('webpack'); 
const async = require('async'); 
const path = require('path'); 
const fs = require('fs'); 
var fileList = []; 

var promiso = new Promise(function(res, rej) { 
    fs.readdir(__dirname + "/imports/components", function(err, files) { 
     files.forEach(function(file) { 
      console.log("file", file); 
      fileList.push(file); 
     }); 

     let config = { 
      entry: { 
      'myPages': fileList[0] 
      }, 
      module: { 
       loaders: [ 
        // Javascript: js, jsx 
       { 
        test: /\.jsx?$/, 
        loader: 'babel-loader', 
        query: { 
         presets: ['es2015', 'react'] 
        } 
       } 
      ] 
     }, 
     output: { 
      path: path.resolve(__dirname, 'dist'), 
      filename: './bundler.js' 
     }, 
    } 
    res(config) 
    }) 
}); 

promiso.then(function(mess) { 
    console.log("-------------------------mess", mess); 
    module.exports = mess; 
}); 

我收到以下錯誤

'output.filename' is required, either in config file or as --output-filename

回答

0

在這裏,你應該返回自己的承諾,然後用它在其他地方。因爲require不能按你的方式工作。加載了require()的節點中的模塊同步加載,並且不可能爲requirereturn任何異步加載的值。

module.exports = promise 

而在另一個文件中使用如下

require('path-to-file').then((mess) => { 
    // Use mess 
}).then(null, (err) => { 
    // Error handling  
})