დეიბაგის დროს Typescript Mocha ტესტებში Docker-ში Visual Studio Code-თან უცნობი გაჩერების წერტილები
მივყვები Mocha ტესტის დებაგირებას Visual Studio Code-ში, რომელიც Docker კონტეინერში მუშაობს. Docker კონტეინერის გამო, ტესტები უნდა გავუშვა კონტეინერის შიგნიდან და მივამაგრო ის, რაც გამორიცხავს მსგავს საკითხებზე პასუხებს. მე დავაკავშირებ დებაგერს და ის ასევე შეფერხდება --debug-brk დროშის ჩართვისას. თუმცა, თითოეული ბრეკპოინტი, რომ მე ვსვავ, მონიშნულია როგორც "Unverified breakpoint" VS Code-ს მიერ, მიუხედავად იმისა, დავაყენე თუ არა ის:
- ტესტირებულ Typescript ფაილებში
- Javascript ფაილები, რომლებიც პირდაპირ ან არაპირდაპირ მოთხოვნილია Typescript ფაილებიდან
- TypeScript კომფილატორის გამომავალში
ეს ვქნები:
- გაატარეთ
npm testკონტეინერის შიგნით, რაც ითარგმნება როგორცNODE_ENV=test API_PORT=8081 DBDATABASE=tests mocha --timeout 50000 -r source-map-support/register -r ts-node/register --preserve-symlinks --exit --debug-brk --inspect=0.0.0.0:9229 "./src/**/*.spec.ts" - გააქტიურეთ დებაგერი.
- დააყენე ბრეკპოინტი. ის მაშინვე გრუეებზე გადადის და მაუსის ქვევით "ვერადასტურებელი ბრეკპოინტი" ეწერება.
launch.json-ის შესაბამისი ნაწილი:
{
"type": "node",
"request": "attach",
"name": "Debug Backend",
"port": 9229,
"restart": true,
"protocol": "inspector",
"localRoot": "${workspaceFolder}/api/backend/",
"remoteRoot": "/api/backend/",
"outFiles": ["${workspaceFolder}/api/backend/dist/**/*.js"],
"skipFiles": ["<node_internals>/**/*.js"]
},
თუ ეს შეიძლება საგამარჯვებლად იყოს, აქ არის tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"lib": ["es5", "dom", "scripthost", "es2017", "es6", "es7"],
"allowJs": true,
"outDir": "./dist/",
"preserveSymlinks": true,
"strict": true,
"noImplicitThis": false,
"moduleResolution": "node",
"baseUrl": "./",
"paths": {
"sequelize-test-helpers": ["typings/sequelize-test-helpers"]
},
"typeRoots": ["node_modules/@types", "typings"],
"types": ["node", "core-js"]
},
"include": ["src/**/*.ts", "typings"]
}