Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Console logging error on bundle.js instead of React component

I have created a Webpack build which works fine for me - it has a dev-server which I use for hot-reloading, and a production express server that runs a template html file and integrates the bundle.js file.

This is all great, except when I'm working in my dev-server, the console gives me error messages like this:

Uncaught Error: Expected the reducer to be a function.(…) bundle.js:36329

It references bundle.js as the source of the error, not the component I am working in, which makes it very difficult to track down the source of the error.

I know as far as the console is aware it is the bundle.js file that contains the error, but how can I get the console to log the pre-bundle code? (e.g. Component.js)

Thanks in advance.

like image 618
Paulos3000 Avatar asked Nov 11 '16 21:11

Paulos3000


3 Answers

You should enable source mapping for a great debugging experience. Source map will link your bundle with your own code so when an error occurs, the error message will output the line number of your file, not the bundle. By default source map are disabled with webpack and can be enable with the property 'devtool' like this:

// webpack.config.js
module.exports = {
    ...
    devtool: '#eval-source-map',
    ...
};

Here's the link to the official documentation: https://webpack.github.io/docs/configuration.html#devtool

like image 114
Seb Bizeul Avatar answered Oct 23 '22 05:10

Seb Bizeul


// webpack.config.js
module.exports = {
    ...
    devtool: '#eval-source-map',
    ...
};

Adding this logs the error in the console with the actual component name and line number in the source. But this allows the users to view the code?

like image 41
Haritha K R Avatar answered Oct 23 '22 05:10

Haritha K R


For webpack 6.0.1. I apply the following for logging in browser console:

//webpack.config.js
module.exports = {
  ...
  devtool: 'source-map',
  ...
}

To eliminate much logging and reduce bundle size in production mode you can use 'cheap-module-source-map':

//webpack.config.js
module.exports = {
  ...
  devtool: 'cheap-module-source-map',
  ...
}
like image 1
Roman Avatar answered Oct 23 '22 06:10

Roman