0

We made a copy of the lsp sample project, and in server.ts we are importing the @types/vscode package to access the Range interface when creating Diagnostic instances. However, when launching the client we get this error from the server:

Error: Cannot find module 'vscode'
Require stack:
- /Users/gvalenc/git/Nick-Steinhauser/vscode-lsp-fork/server/out/server.js
    at Function._resolveFilename (node:internal/modules/cjs/loader:987:15)
    at node:internal/modules/cjs/loader:832:27
    at Function._load (node:electron/js2c/asar_bundle:5:13343)
    at Module.require (node:internal/modules/cjs/loader:1059:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/Users/gvalenc/git/Nick-Steinhauser/vscode-lsp-fork/server/out/server.js:27:29)
    at Module._compile (node:internal/modules/cjs/loader:1163:14)
    at Object..js (node:internal/modules/cjs/loader:1216:10)
    at Module.load (node:internal/modules/cjs/loader:1035:32)
    at node:internal/modules/cjs/loader:876:12 {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/gvalenc/git/Nick-Steinhauser/vscode-lsp-fork/server/out/server.js'
  ]
}

Here is the package.json for the client. The others are very similar.

{
  "name": "test-lib",
  "description": "test-lib",
  "author": "me",
  "license": "MIT",
  "version": "0.0.1",
  "publisher": "vscode",
  "repository": {
    "type": "git",
    "url": ""
  },
  "engines": {
    "vscode": "^1.63.0"
  },
  "dependencies": {
    "@types/vscode": "^1.67.0",
    "vscode-languageclient": "^7.0.0",
    "yaml-language-server": "^1.7.0",
    "log4js": "^6.4.4"
  },
  "devDependencies": {
    "@tsconfig/node16": "^1.0.2",
    "@vscode/test-electron": "^2.1.2"
  }
}

Here is the client's tsconfig.json (the others are about the same).

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "@tsconfig/node16/tsconfig.json",
  "compilerOptions": {
    "esModuleInterop": true,
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true,
    "outDir": "out",
    "rootDir": "src",
    "strict": true,
    "noUnusedLocals": true,
    "noImplicitReturns": true,
    "forceConsistentCasingInFileNames": true,
    "target": "esnext",
    "module": "CommonJS",
    "moduleResolution": "node",
    "types": ["node", "vscode"]
  },
  "include": ["src"],
  "exclude": ["node_modules", ".vscode-test"]
}

Tried deleting all the node_modules folders and reinstalling and recompiling. Am I missing something? Also tried different ways to import (with star and specifically just Range).

My versions:

~/g/N/vscode-lsp-fork [validation]{4} ⛈️ »  npm -v                                                                   {13:54:06}
8.3.1
@   api:cloud   R:us-south
~/g/N/vscode-lsp-fork [validation]{4} ⛈️ »  node -v                                                                  {13:55:10}
v16.14.0

VS Code:
Version: 1.67.0
Commit: 57fd6d0195bb9b9d1b49f6da5db789060795de47
Date: 2022-05-04T12:14:47.100Z
Electron: 17.4.1
Chromium: 98.0.4758.141
Node.js: 16.13.0
V8: 9.8.177.13-electron.0
OS: Darwin x64 21.4.0

2 Answers 2

3

Turns out the vscode package can't be used in the language server. Instead we now use Range.create and Position.create from the vscode-languageserver package to create the Diagnostic instances.

Sign up to request clarification or add additional context in comments.

Comments

0

try to move "@types/vscode" to devDependencies

1 Comment

Tried that. No difference

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.