SourceMaps and JS Debug Acting Strange
I have a couple weird things going on here during Debugging of my React code:
1) I'm not able to see the values of objects or variables once it hits a debug point. They simply show undefined
2) I'm getting lines of code hitting debug points that aren't even there and the component isn't even being rendered
For Case #1: Below shows there's no values when hitting my debug point. If I mouse over anything nothing pops up, nor do I see the typical values that WebStorm shows inline in the actual code realtime, nor do I see any variable values in the debugger as they show undefined
For Case #2: This file is being hit and I'm absolutely sure this component is not being rendered because it's not part of initial load of the Homepage:
Running the site via
"dev": "NODE_ENV=development yarn lint && yarn copyData && yarn compile-server && yarn start & webpack-dev-server -d --watch"
webpack.config.js
```
const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const TerserJSPlugin = require('terser-webpack-plugin');
const HtmlWebPackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const CopyPlugin = require('copy-webpack-plugin');
const isProduction = process.env.NODE_ENV === 'production';
const html = () =>
new HtmlWebPackPlugin({
template: path.resolve(__dirname, 'src/client', 'index.html'),
filename: 'index.html',
hash: true,
});
const copyAllOtherDistFiles = () =>
new CopyPlugin({
patterns: [
{ from: 'src/client/assets', to: 'lib/assets' },
{ from: 'package.json', to: './' },
{ from: 'ext/ink-3.1.10/js/ink-all.min.js', to: 'lib/js' },
{ from: 'ext/ink-3.1.10/js/autoload.min.js', to: 'lib/js' },
{ from: 'ext/js/jquery-2.2.3.min.js', to: 'lib/js' },
{ from: 'feed.xml', to: './' },
{
from: 'src/shared',
to: './shared',
globOptions: {
ignore: ['**/*suppressed.json'],
},
},
],
});
module.exports = {
entry: './src/client/index.tsx',
output: {
filename: 'scripts/app.[hash].bundle.js',
publicPath: '',
path: path.resolve(__dirname, 'dist'),
},
resolve: {
extensions: ['.ts', '.tsx', '.js'],
},
devtool: 'source-map',
devServer: {
open: true,
writeToDisk: false,
contentBase: path.resolve(__dirname, 'dist'),
publicPath: '',
stats: 'errors-only',
host: process.env.HOST, // Defaults to `localhost`
port: process.env.PORT, // Defaults to 8080
proxy: {
'/api': {
target: 'http://localhost:3000',
secure: false,
changeOrigin: true,
logLevel: 'debug',
}
},
},
optimization: {
minimizer: [new TerserJSPlugin({}), new OptimizeCSSAssetsPlugin({})],
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true,
},
},
},
},
module: {
rules: [
{
test: /\.(js)$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
},
},
{
test: /\.(tsx|ts)?$/,
use: 'ts-loader',
exclude: /node_modules/,
},
{
test: /\.html$/,
use: [
{
loader: 'html-loader',
},
],
},
{
test: /\.less$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'],
},
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../../',
},
},
'css-loader',
],
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: 'file-loader',
options: {
outputPath: 'lib/assets/fonts',
},
},
{
test: /\.(png|svg|jpg|gif)$/,
use: ['url-loader'],
},
],
},
plugins: isProduction
? [
new CleanWebpackPlugin(),
copyAllOtherDistFiles(),
new MiniCssExtractPlugin({
filename: isProduction ? 'lib/css/[name].[hash].css' : 'lib/css/main.css',
}),
html(),
]
: [
copyAllOtherDistFiles(),
new MiniCssExtractPlugin({
filename: isProduction ? 'lib/css/[name].[hash].css' : 'lib/css/main.css',
}),
html(),
],
};
```
JS Debug
Browser (Chrome)
Note this forum editor is frustrating in general, especially with the markdown, the wysiwyg is terrible, no code formatting option. What's the markdown for this site? I wish JetBrains would finally improve it after all these years but apparently not. Why don't you at least have a link that's visible at the top of your forum to this? Your Code block formatting doesn't even work properly or much at 90% of the time in here. Why is my text all grey even with the non-code?
Please sign in to leave a comment.
Did you try debugging the same code in Chrome Dev Tools - does it work?
Project the issue can be repeated with would be helpful
Yes in Dev tools I am able to set a breakpoint and see the values.
Here's a screencast of it
I noticed something weird. If I put breakpoints in Dev Tools, the same lines in WebStorm now have values. Very odd. I don't see what that has to do with WebStorm suddenly able to show values and work properly if I'm using Chrome Dev Tool debug
I noticed if I put a debug point in code in Chrome Dev Tools, it would stop at the same line of code in WebStorm even when in Webstorm I had no debug point set. So it's like Webstorm Debug is mimicking the debug points that Chrome Dev Tools is using
Also what's this bug I've seen in the past few months where you set a debug point but it's not showing the little debug icon:
as far as I can see, the file in Dev Tools is a mix or original and generated code... Sourcemaps don't look accurate.
Can you reproduce the issues in a new React app?
Dave Schinkel Elena Pogorelova Well, after 3 years, I see exact same issue - except Webstorm , it is in Intellij Idea. Any idea what was the resolution here? I can see Chrom dev tools cause breakpoints in Idea-Ultimate but when I set breakpoints in Idea, it does not stop there. Also chrome breakpoints are not the same lines as original code.
Most probably the sourcemaps are not accurate enough
What does the code look like when you open it in Chrome Dev Tools? Please share screenshots
yes that is likely the case. I added sourceMap true in tsconfig.json and then things started workign as expected... I did not see that documented in places that I looked for react and webpack links.. But glad its workign now so I cna use same IDE for react and java!