Serverless Framework VSCode调试配置无法执行问题求助
问题:Windows 11下VSCode调试Serverless Framework Node API失败
我正在用Serverless Framework为Web应用开发Node API后端,使用Windows 11系统上的VSCode作为IDE。启动VSCode的运行与调试组件后立即报错,无法解决。
我的launch.json配置
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "run SLS", "program": "${workspaceRoot}/api/fq-transcribe/node_modules/.bin/sls", "args": ["invoke", "local", "-f", "fqTranscribe", "-p", "./test-events/event.json"] } ] }
报错信息
Uncaught SyntaxError C:\Users\david\build\frequency\api\fq-transcribe\node_modules\.bin\sls:2 basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") ^^^^^^^ SyntaxError: missing ) after argument list at compileFunction (vm:360:18) at wrapSafe (internal/modules/cjs/loader:1084:15) at Module._compile (internal/modules/cjs/loader:1119:27) at Module._extensions..js (internal/modules/cjs/loader:1209:10) at Module.load (internal/modules/cjs/loader:1033:32) at Module._load (internal/modules/cjs/loader:868:12) at executeUserEntryPoint (internal/modules/run_main:81:12) at <anonymous> (internal/main/run_main_module:22:47) vm:360 Process exited with code 1
sls文件内容
#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*|*MINGW*|*MSYS*) basedir=`cygpath -w "$basedir"`;; esac if [ -x "$basedir/node" ]; then exec "$basedir/node" "$basedir/../serverless/bin/serverless.js" "$@" else exec node "$basedir/../serverless/bin/serverless.js" "$@" fi
问题原因
你把Shell脚本(sls)当成Node.js脚本运行了,Node无法解析Shell语法,导致抛出语法错误。
解决办法
方法1:直接调用Serverless的Node.js入口文件
修改launch.json,将program指向Serverless的核心JS文件,跳过Shell脚本:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "run SLS", "program": "${workspaceRoot}/api/fq-transcribe/node_modules/serverless/bin/serverless.js", "args": ["invoke", "local", "-f", "fqTranscribe", "-p", "./test-events/event.json"] } ] }
方法2:改用Shell调试类型
如果想保留调用sls脚本,将调试类型改为shell(需确保VSCode安装了Shell调试相关插件):
{ "version": "0.2.0", "configurations": [ { "type": "shell", "request": "launch", "name": "run SLS", "command": "${workspaceRoot}/api/fq-transcribe/node_modules/.bin/sls", "args": ["invoke", "local", "-f", "fqTranscribe", "-p", "./test-events/event.json"] } ] }
内容的提问来源于stack exchange,提问作者dcyprianrw
相关产品推荐
相关产品推荐

