Stop new temp file opening in debugger

Summary

The issue at hand is related to debugging TypeScript files in Visual Studio Code using Mocha or Jest. When attempting to debug, the file with the breakpoint opens in a new temporary instance, rather than the original file. This problem persists across both Mocha and Jest, despite switching between them.

Root Cause

The root cause of this issue can be attributed to several factors, including:

  • Incorrect configuration of the launch.json file
  • TypeScript compilation and source mapping issues
  • Debugger settings and environment variables

Why This Happens in Real Systems

This issue occurs in real systems due to:

  • Complexity of TypeScript compilation and source mapping
  • Inconsistent debugger settings across different projects and environments
  • Versioning issues with dependencies like ts-node and jest

Real-World Impact

The impact of this issue includes:

  • Inefficient debugging processes
  • Increased development time due to constant switching between files
  • Frustration and decreased productivity among developers

Example or Code (if necessary and relevant)

{
  "type": "node",
  "request": "launch",
  "name": "Debug",
  "skipFiles": [
    "/**",
    "${workspaceFolder}/node_modules/**"
  ],
  "console": "integratedTerminal",
  "cwd": "${workspaceFolder}",
  "runtimeArgs": [
    "--loader",
    "ts-node/esm"
  ],
  "program": "src/server.ts",
  "resolveSourceMapLocations": [
    "${workspaceFolder}/**",
    "!**/node_modules/**"
  ],
  "smartStep": true,
  "sourceMaps": true,
  "env": {
    "DEBUG": "app:*",
    "NODE_ENV": "development",
    "NODE_OPTIONS": "--no-warnings"
  }
}

How Senior Engineers Fix It

Senior engineers fix this issue by:

  • Carefully reviewing the launch.json configuration
  • Verifying TypeScript compilation and source mapping settings
  • Adjusting debugger settings and environment variables as needed
  • Utilizing debugger tools and features, such as conditional breakpoints and expression evaluation**

Why Juniors Miss It

Junior engineers may miss this issue due to:

  • Lack of experience with TypeScript and debugging in Visual Studio Code
  • Insufficient understanding of compiler and source mapping concepts
  • Overlooking crucial details in the launch.json configuration and debugger settings