【问题标题】:Remote debug a koa application (Typescript) from a docker container in Webstorm从 Webstorm 中的 docker 容器远程调试 koa 应用程序(Typescript)
【发布时间】:2018-11-18 18:55:18
【问题描述】:

问题:我目前正在尝试使用 KoaJS、Typescript 和 Docker 设置一个新的 NodeJS 项目。安装程序按计划工作,但远程调试给我带来了一些问题 - 或者至少在我的理解中。

如果我启动应用程序并使用 Webstorm 中的“附加到 Node.js/Chrome”调试设置,则调试器可以工作......在某种程度上。我遇到了断点,但同一个文件(即 kernel.ts)再次从 docker workdir(在 Webstorm 中)打开。

看起来像这样:

Fig 1: Kernel.ts with Breakpoint

Fig 2: File opened from docker workdir

此外 - 跳过断点后 - 额外添加的断点无效。

设置

Docker 文件

FROM node:11.1.0-alpine

WORKDIR /share/example

COPY package.json .
RUN npm install --quiet

COPY . .


DockerCompose

version: '3'

services:
  web:
    container_name: example_web
    build: .
    command: npm run debug
    volumes:
    - .:/share/example
    - /share/example/node_modules
    ports:
    - "3000:3000"
    - "9229:9229"


package.json 脚本

"debug": "nodemon --inspect=0.0.0.0:9229 -e ts,tsx --exec node -r ts-node/register ./src/kernel.ts",


tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2017",
    "moduleResolution": "node",
    "noImplicitAny": true,
    "outDir": "./dist",
    "sourceMap": true,
    "inlineSources": true
  },
  "include": [
    "./src/**/*"
  ]
}

问题:这种设置是否可行?已编译 typescript 并让应用程序使用已编译的 js 运行并使用 typescript 文件中设置的断点进行调试?

我怀疑我的 typescript 配置可能是罪魁祸首。 Webstorm 不理解 docker 容器中的 kernel.ts 与打开的文件相同……或者 webstorm 完全理解它,但我的配置只是……缺少。

Ps: 我在没有 Typescript 的情况下尝试了相同的设置,它工作正常(即远程调试,而不是从 docker workdir 打开相同的文件,而是直接跳转到断点所在的文件放)。因此 - 我猜 - 缺少打字稿配置,或者我有概念上的误解。

【问题讨论】:

    标签: typescript docker debugging remote-debugging koa


    【解决方案1】:

    好的。问题解决了。

    并没有真正改变那么多。我现在让 Typescipt 在启动应用程序之前编译文件(使用 JetBrains / Webstorm FileWatchers)。

    并将 Json Script 命令更改为:

    "nodemon --inspect=0.0.0.0:9229 ./dist/kernel.js"
    

    现在按预期工作。

    编辑:我猜想生成的 js 文件的源映射指向“实际源”——docker 容器中的文件——而不是工作目录中的“源”。在宿主机上编译 TS 文件,只指向编译后的 js 版本就可以了。

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 2013-03-05
      • 2018-04-29
      • 2018-01-13
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多