Estoy desarrollando una extensión de Visual Studio Code (languageserver) y funcionó perfectamente bien. Sin embargo, para utilizar las funciones más recientes del servidor de idiomas, actualicé vscode-languageclient a la última versión V7.0.0
npm install vscode-languageclientDespués de eliminar las carpetas node_modules y out, y volver a compilar con
npm install npm build npm run compileRecibo una TONELADA de errores de compilación. Para mostrar solo algunos:
node_modules/vscode-languageclient/lib/common/callHierarchy.d.ts:1:75 - error TS2305: Module '"vscode"' has no exported member 'CallHierarchyItem'. 1 import { Disposable, TextDocument, ProviderResult, Position as VPosition, CallHierarchyItem as VCallHierarchyItem [...] node_modules/vscode-languageclient/lib/common/callHierarchy.d.ts:1:116 - error TS2305: Module '"vscode"' has no exported member 'CallHierarchyIncomingCall'. 1 import { Disposable, TextDocument, ProviderResult, Position as VPosition, CallHierarchyItem as VCallHierarchyItem, CallHierarchyIncomingCall as VCallHierarchyIncomingCall [...]Estoy seguro de que me estoy perdiendo algo importante aquí, pero no tengo idea de qué. Por cierto, el comportamiento es el mismo en Linux y Windows. Tal vez alguien tuvo un problema similar o sabe lo que estoy haciendo mal. ¡Gracias por adelantado!
Como de costumbre, después de hacer la pregunta lo descubrí casi de inmediato.
No eliminé el archivo package-lock.json . Esta fue la razón de la tonelada de mensajes de error. Conduce a algún tipo de desajuste/inconsistencia de la versión en la base del código. Entonces, eliminarlo antes de ejecutar npm install solucionó este problema.
Luego, sin embargo, el archivo src/extension.ts con la async function activate() adentro mostró algunos errores. La solución aquí, además de seguimientos menores, es cambiar
import { LanguageClient, LanguageClientOptions, ...} from 'vscode-languageclient';para
import { LanguageClient, LanguageClientOptions, ...} from 'vscode-languageclient/node';Solo una respuesta de seguimiento, ya que este problema aparentemente ocurre con mucha frecuencia: a partir de la versión 7.0.0 del paquete vscode-languageclient, la base de código se dividió en "común", "nodo" y "navegador".
divida el código en común, nodo y navegador para permitir el uso de los módulos npm de servidor y cliente LSP en un navegador web a través de webpack. Este es un cambio importante y podría generar errores de compilación/tiempo de ejecución si no se adopta. Cada módulo tiene ahora tres exportaciones diferentes que representan la división en común, nodo y navegador. Veamos vscode-jsonrpc para ver un ejemplo: (a) import vscode-jsonrpc solo importará el código común, (b) import vscode-jsonrpc\node importará el común y el código de nodo y (c) import vscode -jsonrpc\browser importará el código común y del navegador.
Los documentos desactualizados todavía están flotando y puede que no sea obvio que "npm install vscode-languageclient" le proporcionará la última versión que no coincide con la documentación anterior.