You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:23:13