cucumber / language-server

Cucumber Language Server
MIT License
33 stars 19 forks source link

Does not work? (cannot find tree-sitter) #56

Closed jonsmithers closed 2 years ago

jonsmithers commented 2 years ago

πŸ‘“ What did you see?

➜  ~ # npm install --global @cucumber/language-server

added 112 packages, and audited 113 packages in 14s

8 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
➜  ~ # cucumber-language-server --version
Error: Cannot find module 'tree-sitter'
Require stack:
- /usr/local/lib/node_modules/@cucumber/language-server/node_modules/@cucumber/language-service/dist/cjs/src/tree-sitter-node/NodeParserAdapter.js
- /usr/local/lib/node_modules/@cucumber/language-server/dist/cjs/src/node/startNodeServer.js
- /usr/local/lib/node_modules/@cucumber/language-server/bin/cucumber-language-server.cjs
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
    at Function.Module._load (node:internal/modules/cjs/loader:780:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/usr/local/lib/node_modules/@cucumber/language-server/node_modules/@cucumber/language-service/src/tree-sitter-node/NodeParserAdapter.ts:2:1)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:827:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)

βœ… What did you expect to see?

The executable installed by this module should not crash.

πŸ“¦ Which tool/library version are you using?

0.12.10

πŸ”¬ How could we reproduce it?

➜  ~ # npm install --global @cucumber/language-server
➜  ~ # cucumber-language-server --version

πŸ“š Any additional context?

I'm trying to use this lsp with neovim via nvim-lspconfig.

aurelien-reeves commented 2 years ago

Hi,

Thanks for your report

Do you have the possibility to test a local install rather than a global one? To check if the global install is responsible for the issue or not

jonsmithers commented 2 years ago

It does reproduce locally:

➜  test-dir # npm add @cucumber/language-server
...
➜  test-dir # node_modules/.bin/cucumber-language-server --version
Error: Cannot find module 'tree-sitter'
Require stack:
- /path/to/test-dir/node_modules/@cucumber/language-service/dist/cjs/src/tree-sitter-node/NodeParserAdapter.js
- /path/to/test-dir/node_modules/@cucumber/language-server/dist/cjs/src/node/startNodeServer.js
- /path/to/test-dir/node_modules/@cucumber/language-server/bin/cucumber-language-server.cjs
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
    at Function.Module._load (node:internal/modules/cjs/loader:780:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/path/to/test-dir/node_modules/@cucumber/language-service/src/tree-sitter-node/NodeParserAdapter.ts:2:1)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:827:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)

Even just require('@cucumber/language-server') will fail with the same error.

➜  test-dir # echo "require('@cucumber/language-server')" | node                                      
node:internal/modules/cjs/loader:942
  throw err;
  ^

Error: Cannot find module 'tree-sitter'
Require stack:
- /path/to/test-dir/node_modules/@cucumber/language-service/dist/cjs/src/tree-sitter-node/NodeParserAdapter.js
- /path/to/test-dir/node_modules/@cucumber/language-server/dist/cjs/src/node/startNodeServer.js
- /path/to/test-dir/[stdin]
    at Module._resolveFilename (node:internal/modules/cjs/loader:939:15)
    at Module._load (node:internal/modules/cjs/loader:780:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/path/to/test-dir/node_modules/@cucumber/language-service/dist/cjs/src/tree-sitter-node/NodeParserAdapter.js:31:34)
    at Module._compile (node:internal/modules/cjs/loader:1105:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Module._load (node:internal/modules/cjs/loader:827:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/path/to/test-dir/node_modules/@cucumber/language-service/dist/cjs/src/tree-sitter-node/NodeParserAdapter.js',
    '/path/to/test-dir/node_modules/@cucumber/language-server/dist/cjs/src/node/startNodeServer.js',
    '/path/to/test-dir/[stdin]'
  ]
}
aslakhellesoy commented 2 years ago

What operating system are you on @jonsmithers?

aslakhellesoy commented 2 years ago

I know what the problem is. The language-service lib doesn’t declare tree-sitter as a dependency.

I think the easiest way to change this is to use the wasm bindings instead. I’ll create a fix for this.