0

我正在更新一个应用程序以使用 webpack 1 中的 webpack 2,并且常规构建工作正常。使用 devServer 并且只需要生成的块之一时似乎会出现问题(它是一个电子应用程序,所以我有主块和渲染器块 - 两者都包含在常规构建中,而开发服务器仅包含渲染器块)

一切都在 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
  }
};

似乎其中一个块没有正确包含:

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

module.exports = require("url");

为什么是这样?

4

1 回答 1

0

所以看来问题在于我将目标设置为electron但为 web 构建。这似乎在 webpack 1 中有效,但在更新到 webpack 2 后,它不再在两个包中包含运行时。

我采取的解决方案是有两个配置 - 一个用于电子(我的主要构建),一个用于 web(在 webpack 配置中指定目标)

于 2016-10-19T09:18:05.333 回答