【发布时间】: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