Skip to content

Instantly share code, notes, and snippets.

@cecilemuller
Last active December 5, 2023 07:17
Star You must be signed in to star a gist
Embed
What would you like to do?
Run ts-node in VSCode Debugger
{
"version": "0.2.0",
"configurations": [
{
"name": "Example",
"type": "node",
"request": "launch",
"runtimeExecutable": "node",
"runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],
"args": ["src/script.ts", "--example", "hello"],
"cwd": "${workspaceRoot}",
"internalConsoleOptions": "openOnSessionStart",
"skipFiles": ["<node_internals>/**", "node_modules/**"]
}
]
}
@manuth
Copy link

manuth commented Aug 16, 2022

I'm getting "unknown file extension" for file "main.ts"

@mrjbj This happens if you're working with an ES Module (a project with a "type": "module" in its package.json-file).
You can find the arguments required for using ESModules in ts-nodes README: https://github.com/TypeStrong/ts-node/tree/8b09d49b26c1c25e34133b857c073729dd691f11#node-flags-and-other-tools

tl;dr-version

For running ESModules using ts-node you might want to use a task-configuration looking like this:

{
    "type": "node",
    "request": "launch",
    "name": "Launch ESModule TypeScript File",
    "cwd": "${workspaceFolder}",
    "runtimeArgs": [
        "--loader",
        "ts-node/esm"
    ],
    "program": "{ Path to Your `.ts` File}"
}

@darius-sas
Copy link

For me it worked after removing /transpile-only from this line

"runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],

@resticker
Copy link

resticker commented Sep 2, 2022

This (https://gist.github.com/cecilemuller/2963155d0f249c1544289b78a1cdd695?permalink_comment_id=4268529#gistcomment-4268529) got me on the right path, but I needed to add "--experimental-specifier-resolution=node", which I realized after remembering i use nodemon like this in my package.json: "npx nodemon --esm --experimentalSpecifierResolution node ./src/index.ts" (note that the camelCase version didn't work, and needed to use the hypenated one experimental-specifier-resolution=node) in order to work with ESM

 "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Server",
      "cwd": "${workspaceFolder}",
      "runtimeArgs": [
        "--loader",
        "ts-node/esm",
        "--experimental-specifier-resolution=node"
      ],
      "program": "${workspaceFolder}/src/index.ts"
    }

Hope this helps someone 🍻

@iofirag
Copy link

iofirag commented Dec 4, 2022

{
"command": "npm start",
"name": "Run npm start",
"request": "launch",
"type": "node-terminal"
}

thanks! :))

@trosck
Copy link

trosck commented Dec 23, 2022

thanks!
my config (I use ts-node bin script):

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**",
        "node_modules/**",
      ],
      "cwd": "${workspaceRoot}",
      "internalConsoleOptions": "openOnSessionStart",
      "env": {
        "LOCAL_MODE": "true",
      },
      "args": [
        "node_modules/ts-node/dist/bin.js",
        "-r",
        "tsconfig-paths/register",
        "src/index.ts",
      ],
      "runtimeArgs": [
        "--unhandled-rejections=strict",
        "--nolazy",
      ],
    }
  ]
}

@DLatheron
Copy link

I have literally wasted two evenings trying to get my typescript running under VSCode (even though it runs fine using ts-node) - I was just about to throw in the towel and spend the rest of the evening screaming at the moon...

Thank you so much for sharing ❤️

@noirlyrik
Copy link

thanks a lot!

@magickeyyy
Copy link

@rutexd
Copy link

rutexd commented Mar 1, 2023

It actually worked without any problems from first try. Awesome!! 👍

@d0zingcat
Copy link

node-ter

You saved my life! thx!

@kkkkkkhx
Copy link

kkkkkkhx commented Mar 8, 2023

ok

@mfeeney
Copy link

mfeeney commented Apr 14, 2023

I've had the following config working forever without issue, but after upgrading to typescript 5 and apollo server 4, all of the sudden it doesn't like it anymore...

{ "version": "0.2.0", "configurations": [ { "name": "Server", "type": "node", "request": "launch", "runtimeExecutable": "node", "runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"], "resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"], "args": ["src/index.ts"], "env": { "NODE_ENV": "local" }, "cwd": "${workspaceRoot}", "internalConsoleOptions": "openOnSessionStart", "skipFiles": ["<node_internals>/**", "node_modules/**"] } ] }

I end up getting this, which looks like it's not skipping the node_modules like it should
/node_modules/@apollo/server/dist/cjs/ApolloServer.js:70 const nodeEnv = config.nodeEnv ?? process.env.NODE_ENV ?? '';

Anyone else seen anything like this?

@mcustiel
Copy link

Thank you very much. I used your config to be able to debug typescript in neovim using dap.

@L9m
Copy link

L9m commented Jun 11, 2023

no type checking and need to use tsconfig-paths to resolve paths

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "runtimeArgs": ["-r", "ts-node/register/transpile-only", "-r", "tsconfig-paths/register"],
            "program": "${workspaceFolder}/packages/lerna/src/cli.js",
            "args": ["version"],
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "internalConsoleOptions": "neverOpen",
        }
    ]
}

@pablezhang
Copy link

Error: Cannot find module 'ts-node/register/transpile-only'

fixed this by install ts-node locally

npm link ts-node

// or 

yarn add -D ts-node

@iulo thanks,u save my day.

@silvioprog
Copy link

Works perfectly for me

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ts-node",
      "type": "node",
      "request": "launch",
      "args": ["${relativeFile}"],
      "runtimeArgs": ["-r", "ts-node/register"],
      "cwd": "${workspaceRoot}",
      "protocol": "inspector",
      "internalConsoleOptions": "openOnSessionStart"
    }
  ]
}

Not all heroes wear capes! 😀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment