0

我正在编写一个应该连接到 tsserver 的 vscode 扩展,以便为 typescript/javascript 提供语言支持。

这是我的做法(在 extension.ts 中,在 activate 中):

const serverModule = path.resolve(
  __dirname,
  "..",
  "node_modules",
  "typescript",
  "lib",
  "tsserver.js"
);

const debugOptions = { execArgv: ["--nolazy", "--inspect=6009"] };

const serverOptions: ServerOptions = {
  run: { module: serverModule, transport: TransportKind.ipc },
  debug: {
    module: serverModule,
    transport: TransportKind.ipc,
    options: debugOptions,
  },
};

const clientOptions = {
  documentSelector: [
    {
      scheme: "file",
      language: "typescript",
    },
  ],
};

client = new LanguageClient(
  "server-id",
  "server-name",
  serverOptions,
  clientOptions
);

context.subscriptions.push(client.start());

但是当我调用 client.onReady().then(() => client.sendRequest(...)); 请求未发送。我几乎可以肯定问题是初始化阶段不成功,所以 onReady() 方法阻止了我。我如何让它工作?

4

1 回答 1

1

tsserver 不使用语言服务器协议,它有自己的基于 json 的协议。您无法使用语言服务器协议 apis 连接到它

于 2020-05-28T22:11:55.827 回答