Удаленная отладка приложения коа (Typescript) из док-контейнера в Webstorm - PullRequest
0 голосов
/ 18 ноября 2018

Проблема : В настоящее время я пытаюсь настроить новый проект 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, и она работает нормально (т.е. удаленная отладка и не открывается тот же файл из рабочего каталога докера, но прыгает прямо в файл, где была установлена ​​точка останова) ). Поэтому - я думаю - конфигурация машинописного текста отсутствует или у меня есть концептуальное недоразумение.

1 Ответ

0 голосов
/ 18 ноября 2018

Хорошо.Задача решена.

Не сильно изменилось.Я позволил Typescipt теперь скомпилировать файлы перед запуском приложения (используя JetBrains / Webstorm FileWatchers).

и изменил команду Json Script на:

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

Работает теперь, как и ожидалось.

Редактировать: Я полагаю, что исходная карта сгенерированных js-файлов указала на«фактический источник» - файлы в контейнере Docker - вместо «источник» в рабочем каталоге.Компилирование файлов TS на хосте и просто указание на скомпилированную версию js работает нормально.

...