Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Webpack error on lodash load using externals config

i am trying to modify a current project using webpack. On my scripts i am using lodash library but i have also scripts that are not written on ES6 so i load lodash globally using a normal script tag. Based on the webpack documentation i have added the below config on the webpack (https://webpack.js.org/configuration/externals/).

lodash : {
        commonjs: 'lodash',
        amd: 'lodash',
        root: '_' // indicates global variable
      },

I compile the code using babel without any problem but when the actual code is executed i receive the below error "TypeError: Cannot read property 'forEach' of undefined"

If i remove the import _ from "lodash"; statement from the file then the issue is resolved and script is working as expected as _ is on global.

But this was expected to work also without adding the externals correct ? According with the webpack example for jquery

module.exports = {
  //...
  externals: {
    jquery: 'jQuery'
  }
};

The below code will be unchanged

import $ from 'jquery';
$('.my-element').animate(/* ... */);

In my case why is not working ? Any suggestions ? ideas?

like image 712
user1521944 Avatar asked Dec 17 '25 20:12

user1521944


1 Answers

I think i found a solution, after i read the documentation again and again i noticed that message which is also on yellow border

An object with { root, amd, commonjs, ... } is only allowed for libraryTarget: 'umd'. It's not allowed for other library targets.

So i have changed my config from

lodash : {
      commonjs: 'lodash',
      amd: 'lodash',
      root: '_' // indicates global variable
    }

to

lodash: '_'

and issue solved, now is working as expected. It will be great of course if i understand why this was an issue

like image 69
user1521944 Avatar answered Dec 19 '25 11:12

user1521944



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!