Точки останова VSCode отключены (выделены серым цветом) при работе с Typescritp и Serverless Offline
Я разрабатываю некоторые лямбда-функции с использованием serverless-framework. Каркас без обслуживания был установлен во всем мире.
Я использую Typescript и serverless-webpack.
Я также использую serverless-offline для тестирования локально.
Все работает нормально, за исключением случаев, когда я пытаюсь отладить из VSCode. Проблема в том, что, как только я запускаю автономный сервер из средства отладки VSCode, все мои точки останова становятся серыми.
Здесь мои файлы конфигурации
package.json
{
"name": "backend-serverless",
"version": "1.0.0",
"description": "serverless backend",
"main": "handler.js",
"scripts": {
"test": "mocha -r ts-node/register transform/src/**/*.spec.ts src/**/**/*.spec.ts",
"tsc": "tsc",
},
"author": "",
"license": "ISC",
"devDependencies": {
"@types/aws-lambda": "0.0.34",
"@types/chai": "^4.1.2",
"@types/mocha": "^5.0.0",
"@types/node": "^9.6.0",
"chai": "^4.1.2",
"mocha": "^5.0.5",
"serverless-offline": "^3.18.0",
"serverless-webpack": "^5.1.1",
"ts-loader": "^4.1.0",
"ts-node": "^5.0.1",
"typescript": "^2.7.2",
"webpack": "^4.3.0"
}
}
webpack.config.ts
const path = require('path');
const slsw = require('serverless-webpack');
module.exports = {
devtool: 'source-map',
entry: slsw.lib.entries,
resolve: {
extensions: [
'.js',
'.json',
'.ts',
'.tsx'
]
},
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: '[name].js'
},
target: 'node',
module: {
rules: [
{
test: /\.ts(x?)$/,
use: [
{
loader: 'ts-loader'
}
],
}
]
}
};
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Current TS File",
"type": "node",
"request": "launch",
"args": ["${relativeFile}"],
"runtimeArgs": ["--nolazy", "-r", "ts-node/register"],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector"
},
{
"type": "node",
"request": "launch",
"name": "Debug - Offline",
"program": "/usr/local/bin/serverless",
"args": [
"offline",
"start",
"--lazy"
],
"env": {
"NODE_ENV": "development"
},
"outFiles": [
"${cwd}/.webpack/**/*"
],
"sourceMaps": true,
"cwd": "${workspaceRoot}",
"protocol": "inspector"
}
]
}
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"outDir": "dist",
"sourceMap": true
},
"include": [
"src/**/*.ts", "*.ts"
],
"exclude": [
"node_modules"
],
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2016",
"dom"
]
}
Кстати, если я попытаюсь отладить любую обычную функцию, написанную на Typescript, используя Current TS File
запустить конфигурацию, все мои контрольные точки работают отлично. Если я использую Debug - Offline
Запустите конфигурацию, тогда все точки останова станут серыми.
1 ответ
Я считаю, что это (недавно представленная) ошибка в VSCode.
Доказательства
Я использую serverless-webpack
а также serverless-offline
с лямбда-функциями Typescript на несколько месяцев. Отладка с настройкой, очень похожей на вашу, никогда не была проблемой до недавнего времени.
Описанные вами симптомы легко воссоздать с помощью нового проекта, созданного
serverless create --template aws-nodejs-typescript
(плюс два плагина), используя последний VSCode (1.21.1).
Временное решение
Я не использую React Native, но обходной путь, описанный в этом выпуске, работает для меня. После запуска отладчика, когда все точки останова выделены серым цветом, добавьте новую точку останова или удалите и повторно добавьте существующую точку останова. Кажется, что любое действие "пробуждает" отладчик, а остальные точки останова связываются.
Недавно представленный?
Я откатил свой VSCode до 1.18.1, и проблема исчезла. Затем я прошел серию обновлений и убедился, что версии 1.19.3 и 1.20.1 также работают нормально.
Версия 1.21.1, кажется, единственная, которая страдает от этой ошибки. Поэтому, если обходной путь не работает для вас или вы не хотите его использовать, откат к VSCode 1.20.1 (или более ранней версии) может решить вашу проблему.
Заметки
launch.json
Конфигурация, которую я использую для этой настройки, довольно минимальна и обычно выглядит так:
{
"type": "node",
"request": "launch",
"name": "Debug API Gateway",
"program": "${workspaceFolder}/node_modules/serverless/bin/serverless",
"args": [
"offline",
"start"
]
}
Эта конфигурация всегда работала для меня; Мне никогда не приходилось указывать такие вещи, как outFiles
или же sourceMaps
чтобы отладка работала с машинописью, serverless-offline
а также serverless-webpack
,