Saturday, 18 March 2017

Webpack 2: can't resolve node.js native modules

After bundling I have following errors:

Module not found: Error: Can't resolve 'crypto' in //filePath

It can't resolve five modules: crypto, fs, path, vm and constants - from any file which requires them

I thought it could be because of nvm which I use, but I switched to system nodejs via nvm use system command and webpack still throws these errors.

I also thought it could be target property, so I changed it to node, but it didn't help too (anyway I need electron-renderer, not node).

Important note: I've just migrated from webpack 1. It all works well before I migrated. But these are the only errors I have. Moreover, webpack seems to work fine, it even watches files when I pass --watch option.

Here is my webpack.config.js:

const config = {
  target: 'electron-renderer',
  context: __dirname,
  entry: { app: './app.js', vendor: [/*vendors*/]},
  cache: true,
  devtool: 'source-map',
  watch: false

  resolve: {
    extensions: ['.js', '.json', '.jsx'],
    modules: ["node_modules"]
  },

  module: {

    rules: [
      {test: /\.html/, loader: 'html-loader'},
      {
        test: /\.less$/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: ["css-loader?sourceMap", "less-loader?sourceMap"]
        })
      },
      {
        test: /\.css/,
        use: ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader?sourceMap"
        })
      },
      {test: /\.(jpg|png|gif|jpeg|svg|otf|ttf|eot|woff)$/, loader: 'url-loader?limit=10000'}
    ]
  },

  plugins: [

    new ExtractTextPlugin('styles.[contenthash].css'),

    new webpack.optimize.CommonsChunkPlugin({
      names: ['commons', 'vendor', 'manifest'],
      minChuncks: Infinity
    }),

    new HtmlWebpackPlugin({
      template: './index.html',
      filename: 'index.html',
      hash: false,
      inject: 'head',
      cashe: true,
      showErrors: true
    })

  ],

  output: {
    publicPath: './',
    path: path.join(__dirname, 'dist'),
    filename: '[name].[chunkhash].js',
    chunkFilename: '[name].[chunkhash].js'
  }
};

module.exports = config;



via GProst

No comments:

Post a Comment