【问题标题】:How to set up a remote Language Server node process to be debuggable in VS Code?如何设置远程语言服务器节点进程以在 VS Code 中调试?
【发布时间】:2020-11-13 03:39:33
【问题描述】:

我们有一个(内部)VS Code 扩展来实现一种语言的语言服务器协议。我检查了VS Code LS sample 以在服务器上启用调试,但是在示例中,用于初始化LanguageClientServerOptions 始终是一个类型:

{
  run: NodeModule;
  debug: NodeModule;
}

这里可以将带有端口号的检查参数显式传递给客户端,然后可以用于调试。

在我们的项目中,我们已经在使用ServerOptions 类型的(() => Promise<StreamInfo>) 版本,当然它没有提供一种机制来传递参数来启动服务,并在特定端口进行调试。

为了启动语言服务器,我们稍后调用child_process.spawn(command, args, options) 并带有一些参数来启动服务器进程。这里commandnodeargs["path/to/server/main.js", "path/to/log/output" ]options 是:

{
  "cwd":"path/to/workspace/folder",
  "env":{/*various environment propreties, including a hostname, but no port*/}
}

我假设此时我们应该传入一个特定的参数/环境变量以使服务器可调试?我可以在这里传递什么来监听给定端口上的调试器?

注意:我们正在利用 vscode-remote,但我认为这不会影响答案(除了确保使用的端口在远程机器上打开)。

【问题讨论】:

    标签: node.js visual-studio-code vscode-extensions vscode-remote


    【解决方案1】:

    我发现的机制是在child_process.spawn(...) 中添加“--inspect”作为args 的第一个参数,所以args 现在具有值: ["--inspect", "path/to/server/main.js", "path/to/log/output"]

    这会在 127.0.0.1 上的默认节点端口 (9229) 上启动调试侦听器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2018-10-16
      • 2016-07-24
      • 2019-08-06
      • 2020-10-10
      • 2017-07-20
      相关资源
      最近更新 更多