i am using a proxy between the editor and the language server : jsonrpc-ws-proxy
But i am getting an error when i try to start the proxy
Forwarding new client
Launching Example Server failed: Error: spawn typescript-language-server ENOENT
Client closed
in the web editor i get this
Couldn't start client Sample Language Client
client.js:2442 Uncaught (in promise) Error: Connection to server got closed. Server will not be restarted.
at MonacoLanguageClient.handleConnectionClosed (client.js:2442)
at CallbackList.invoke (events.js:55)
at Emitter.fire (events.js:117)
at closeHandler (connection.js:256)
at CallbackList.invoke (events.js:55)
at Emitter.fire (events.js:117)
at WebSocketMessageReader.fireClose (messageReader.js:40)
at WebSocketMessageReader.fireClose (reader.ts:81)
at reader.ts:32
at WebSocket.webSocket.onclose (connection.ts:32)
import { MessageConnection } from 'vscode-jsonrpc';
import { listen } from '@codingame/monaco-jsonrpc';
import * as monaco from 'monaco-editor';
import {
MonacoLanguageClient, CloseAction, ErrorAction,
MonacoServices, createConnection
} from '@codingame/monaco-languageclient';
import normalizeUrl = require('normalize-url');
const ReconnectingWebSocket = require('reconnecting-websocket');
// register Monaco languages
monaco.languages.register({
id: 'typescript',
extensions: ['.ts'],
aliases: ['TypeScript','ts','TS','Typescript','typescript']
})
// create Monaco editor
const value = `
let message:string = 'foo'
`;
monaco.editor.create(document.getElementById("container")!, {
model: monaco.editor.createModel(value, 'typescript', monaco.Uri.parse('C:\\Users\\yylla\\Desktop\\Projet\\demo\\ts\\file.ts')),
glyphMargin: true,
theme: "vs-dark",
lightbulb: {
enabled: true
}
});
// install Monaco language client services
MonacoServices.install(monaco);
// create the web socket
const url = createUrl('ws://localhost:3000/ts')
const webSocket = createWebSocket(url);
// listen when the web socket is opened
listen({
webSocket,
onConnection: connection => {
// create and start the language client
const languageClient = createLanguageClient(connection);
const disposable = languageClient.start();
connection.onClose(() => disposable.dispose());
}
});
function createLanguageClient(connection: MessageConnection): MonacoLanguageClient {
return new MonacoLanguageClient({
name: "Sample Language Client",
clientOptions: {
// use a language id as a document selector
documentSelector: ['typescript'],
// disable the default error handler
errorHandler: {
error: () => ErrorAction.Continue,
closed: () => CloseAction.DoNotRestart
}
},
// create a language client connection from the JSON RPC connection on demand
connectionProvider: {
get: (errorHandler, closeHandler) => {
return Promise.resolve(createConnection(connection, errorHandler, closeHandler))
}
}
});
}
function createUrl(path: string): string {
return normalizeUrl(path);
}
function createWebSocket(url: string): WebSocket {
const socketOptions = {
maxReconnectionDelay: 10000,
minReconnectionDelay: 1000,
reconnectionDelayGrowFactor: 1.3,
connectionTimeout: 10000,
maxRetries: Infinity,
debug: false
};
return new ReconnectingWebSocket(url, [], socketOptions);
}
i am using a proxy between the editor and the language server : jsonrpc-ws-proxy But i am getting an error when i try to start the proxy
in the web editor i get this
i am following this tutorial : https://medium.com/dscddu/language-server-protocol-adding-support-for-multiple-language-servers-to-monaco-editor-a3c35e42a98d