Проблема : В настоящее время я пытаюсь настроить новый проект NodeJS, используя KoaJS, Typescript и Docker. Установка работает так, как и планировалось, но удаленная отладка доставляет мне некоторые проблемы - или, по крайней мере, для моего понимания.
Если я запускаю приложение и использую параметр отладки «Attach to Node.js / Chrome» из Webstorm, отладчик работает ... до некоторой степени. Я вхожу в точку останова, но тот же файл (например, kernel.ts) снова открывается из рабочего каталога докера (в Webstorm).
Это выглядит так:
Рис. 1: Kernel.ts с точкой останова
Рис. 2: Файл, открытый из рабочей папки докера
Более того - после прыжка через контрольные точки дополнительные добавленные контрольные точки не дают эффекта.
Настройка :
DockerFile
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/**/*"
]
}
Вопрос: Возможна ли эта настройка? Скомпилировать машинопись и позволить приложению работать с откомпилированным js и отлаживать с точками останова, установленными в файле машинописи?
У меня есть подозрения, что мой конфиг машинописи, вероятно, виновник. Что-то в Webstorm не понимает, что kernel.ts в контейнере docker совпадает с открытым файлом ... или webstorm прекрасно понимает это, но моей конфигурации просто ... не хватает.
Ps: Я попробовал ту же установку без Typescript, и она работает нормально (т.е. удаленная отладка и не открывается тот же файл из рабочего каталога докера, но прыгает прямо в файл, где была установлена точка останова) ). Поэтому - я думаю - конфигурация машинописного текста отсутствует или у меня есть концептуальное недоразумение.