0

webpack 1からwebpack 2を使用するようにアプリケーションを更新しています。この問題は、devServerを使用して生成されたチャンクの1つだけを必要とするように見えます(これは電子アプリなので、メインとレンダラーのチャンクがあります - 両方とも通常のビルドに含まれていて、devサーバーはレンダラーのチャンクUncaught ReferenceError:requireが定義されていません - Webpack2

すべてがwebpack 1で動作しましたが、何らかの理由でランタイムが私のチャンクに含まれていませんか?私はそれらを再注文しようとしましたが、役に立たない。

const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const webpack = require('webpack'); 
const path = require('path'); 

module.exports = { 
    context: __dirname, 
    entry: { 
    main: './main.js', 
    renderer: './app/index.jsx' 
    }, 
    output: { 
     path: path.resolve(__dirname, './dist'), 
     filename: "[name].js" 
    }, 
    node: { 
    __dirname: false, 
    __filename: false 
    }, 
    devtool: 'cheap-eval-source-map', 
    target: 'electron', 
    module: { 
    loaders: [ 
     { 
     test: /(\.js$|\.jsx$)/, 
     exclude: /(node_modules|dist)/, 
     loader: 'babel' 
     }, 
     { test: /\.scss$/, loader: "style!css?modules!sass" }, 
     { test: /\.png$/, loader: "url?limit=100000" }, 
     { test: /\.jpg$/, loader: "file" } 
    ] 
    }, 
    resolve: { 
    extensions: ['.js', '.jsx', '.scss'], 
    modules: [path.resolve('./app'), 'node_modules'] 
    }, 
    plugins: [ 
    new HtmlWebpackPlugin({ 
    template: './app/index.html', 
    chunks: ['renderer'], 
    inject: 'body', 
    hash: 'true' 
    }), 
    new webpack.DefinePlugin({ 
     'process.env': { 
     'NODE_ENV': '"dev"' 
     } 
    }) 
    ], 
    devServer: { 
    contentBase: __dirname 
    }, 
    externals: { 
    'cheerio': 'window', 
    'react/addons': true, 
    'react/lib/ExecutionEnvironment': true, 
    'react/lib/ReactContext': true 
    } 
}; 

チャンクの1が適切に含まれていないようだ。

/***/ }, 
/* 26 */ 
/***/ function(module, exports) { 

module.exports = require("url"); 

これはなぜですか?

答えて

0

だから、目標はelectronに設定されていましたが、ウェブ用にビルドされていたようです。これはwebpack 1で動作するように見えましたが、webpack 2に更新した後、両方のバンドルにランタイムが含まれなくなりました。

私が取った解決策は、電子(メインビルド)とウェブ(ウェブパックの設定でターゲットを指定)の2つの設定を持つことでした。

関連する問題