我正在使用无服务器框架开发一些Lambda函数。无服务框架已在全球安装。
我正在使用Typescript和serverless-webpack。
我也在使用无服务器离线进行本地测试。
除非我尝试在VSCode中进行调试,否则一切正常。问题是,只要我从VSCode的Debug工具启动 无服务器离线 ,我的所有断点都会变灰。
这是我的配置文件
的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"
]
}
顺便说一句,如果我尝试使用Current TS File
启动配置调试在Typescript中编写的任何普通函数,那么我的所有断点都可以正常工作。如果我使用Debug - Offline
启动配置,那么所有断点都会变灰。
答案 0 :(得分:0)
我相信这是(最近推出的)VSCode中的错误。
<强>证据强>
我已经使用serverless-webpack
和serverless-offline
使用Typescript lambda函数几个月了。直到最近,使用与您的设置非常相似的设置进行调试从未成为问题。
您描述的症状很容易通过
创建的新项目重新创建serverless create --template aws-nodejs-typescript
(加上两个插件),使用最新的VSCode(1.21.1)。
解决方法强>
我没有使用React Native,但解决方法described in this issue对我有用。调试器启动后,所有断点都显示为灰色,添加新断点或删除并重新添加现有断点。这两种动作似乎都是“唤醒”#34;调试器和其他断点都绑定。
最近推出?
我将我的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
之类的内容来调试使用typescript,serverless-offline
和serverless-webpack
。