nathansbradshaw / zed-angular

MIT License
31 stars 3 forks source link

Extension won't build after update - typescript dependency error #14

Open nevadascout opened 11 hours ago

nevadascout commented 11 hours ago

After pulling the newest version (67657eae0eeb59e16f06fe0ee82e69c1d301bc02) the extension won't run anymore.

I ran git pull to update the repo locally, then in Zed I clicked "Rebuild" for the angular extension in the extensions list. It failed with this error:

Language server error: angular

oneshot canceled
-- stderr--
/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241
      throw new Error(`Failed to resolve '${packageName}' with minimum version '${minVersion}' from ` + JSON.stringify(probeLocations, null, 2));
      ^

Error: Failed to resolve 'typescript/lib/tsserverlibrary' with minimum version '5.0' from [
  "node_modules/typescript/lib"
]
    at resolveWithMinVersion (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241:13)
    at resolveTsServer (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:255:14)
    at requireOverride (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:311:57)
    at Object.<anonymous> (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:215067:25)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Module._load (node:internal/modules/cjs/loader:1024:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
    at node:internal/main/run_main_module:28:49

Node.js v20.16.0

Presumably this is caused by incompatible versions of typescript?

nathansbradshaw commented 8 hours ago

That seems to be the issue, can you look into the package json found at /Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/

And check what was installed, I wonder if I overlooked something

nevadascout commented 7 hours ago

package.json contents:

{
  "dependencies": {
    "@angular/language-server": "18.2.0",
    "typescript": "5.5.4"
  }
}

package-lock.json contents:

{
  "name": "angular",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "dependencies": {
        "@angular/language-server": "18.2.0",
        "typescript": "5.5.4"
      }
    },
    "node_modules/@angular/language-server": {
      "version": "18.2.0",
      "resolved": "https://registry.npmjs.org/@angular/language-server/-/language-server-18.2.0.tgz",
      "integrity": "sha512-8ifx0LuMkxMZkVPNiMxdGxuCw65FlDhW04ETN8BL6NV+46tfVk1yEC8Rc6Jm+bNfDxEoD/V8jxzLZVriuUvOWw==",
      "license": "MIT",
      "dependencies": {
        "@angular/language-service": "18.2.0-rc.0",
        "vscode-html-languageservice": "^4.2.5",
        "vscode-jsonrpc": "6.0.0",
        "vscode-languageserver": "7.0.0",
        "vscode-languageserver-textdocument": "^1.0.7",
        "vscode-uri": "3.0.7"
      },
      "bin": {
        "ngserver": "bin/ngserver"
      },
      "engines": {
        "node": "^18.19.1 || ^20.11.1"
      }
    },
    "node_modules/@angular/language-service": {
      "version": "18.2.0-rc.0",
      "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.0-rc.0.tgz",
      "integrity": "sha512-mcWU4PPMRDwuPrGO6p1lOOH+KbHoAdPxtjoBA0wuR4PlELis6scWKoDHwuFOrga0ZL6/hZHc0qEG3iycLzD5Ng==",
      "license": "MIT",
      "engines": {
        "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
      }
    },
    "node_modules/typescript": {
      "version": "5.5.4",
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
      "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
      "license": "Apache-2.0",
      "bin": {
        "tsc": "bin/tsc",
        "tsserver": "bin/tsserver"
      },
      "engines": {
        "node": ">=14.17"
      }
    },
    "node_modules/vscode-html-languageservice": {
      "version": "4.2.5",
      "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-4.2.5.tgz",
      "integrity": "sha512-dbr10KHabB9EaK8lI0XZW7SqOsTfrNyT3Nuj0GoPi4LjGKUmMiLtsqzfedIzRTzqY+w0FiLdh0/kQrnQ0tLxrw==",
      "license": "MIT",
      "dependencies": {
        "vscode-languageserver-textdocument": "^1.0.4",
        "vscode-languageserver-types": "^3.16.0",
        "vscode-nls": "^5.0.0",
        "vscode-uri": "^3.0.3"
      }
    },
    "node_modules/vscode-jsonrpc": {
      "version": "6.0.0",
      "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz",
      "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==",
      "license": "MIT",
      "engines": {
        "node": ">=8.0.0 || >=10.0.0"
      }
    },
    "node_modules/vscode-languageserver": {
      "version": "7.0.0",
      "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz",
      "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==",
      "license": "MIT",
      "dependencies": {
        "vscode-languageserver-protocol": "3.16.0"
      },
      "bin": {
        "installServerIntoExtension": "bin/installServerIntoExtension"
      }
    },
    "node_modules/vscode-languageserver-protocol": {
      "version": "3.16.0",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz",
      "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==",
      "license": "MIT",
      "dependencies": {
        "vscode-jsonrpc": "6.0.0",
        "vscode-languageserver-types": "3.16.0"
      }
    },
    "node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
      "version": "3.16.0",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz",
      "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==",
      "license": "MIT"
    },
    "node_modules/vscode-languageserver-textdocument": {
      "version": "1.0.12",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
      "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
      "license": "MIT"
    },
    "node_modules/vscode-languageserver-types": {
      "version": "3.17.5",
      "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
      "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
      "license": "MIT"
    },
    "node_modules/vscode-nls": {
      "version": "5.2.0",
      "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
      "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
      "license": "MIT"
    },
    "node_modules/vscode-uri": {
      "version": "3.0.7",
      "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
      "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
      "license": "MIT"
    }
  }
}

Node modules subfolders:

Screenshot 2024-10-25 at 14 31 00
nathansbradshaw commented 7 hours ago

That's interesting, Theoretically it should be working, however, I did find some more bad logic, so I'll be updating the repo soonTM

nathansbradshaw commented 7 hours ago

Looking at that package lock, makes me wonder if we should actually be using @angular/language-service instead? It seems @angular/language-server is very specific to vs code. When I have more time I'll chase out that rabit hole

nevadascout commented 7 hours ago

Yes I suppose that @angular/language-server was built for VS Code because Microsoft created the LSP for VS Code, and probably the Angular team did not give much thought to supporting other editors because at the time there were no others that supported the LSP.

Now, of course, the LSP is much more widely implemented.

I created the original PHP plugin for VS Code and implemented a language server with no real knowledge of what I was doing 😅 Later Sourcegraph wanted to use it but they weren't able to because I wasn't following the LSP spec.

nathansbradshaw commented 6 hours ago

Here's a branch, let me know if it works https://github.com/nathansbradshaw/zed-angular/pull/15 (Although i'd be surprised if it does since your package.json is using the correct. Versions. What version of angular are you using in your project?

That's awesome, I definitely understand the not knowing what I'm doing part. I need to find some time to actually go through and read through the documentation both on zed and angular (documentation meaning code here, since formal docs don't seem to exist for either), I've also seen that neovim has an angular lsp, but that is built similar to the vscode one. I don't know how well neovim plugins translate to zed extensions.

nevadascout commented 6 hours ago

I seem to have the same error:

Language server error: angular

oneshot canceled
-- stderr--
/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241
      throw new Error(`Failed to resolve '${packageName}' with minimum version '${minVersion}' from ` + JSON.stringify(probeLocations, null, 2));
      ^

Error: Failed to resolve 'typescript/lib/tsserverlibrary' with minimum version '5.0' from [
  "node_modules/typescript/lib"
]
    at resolveWithMinVersion (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:241:13)
    at resolveTsServer (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:255:14)
    at requireOverride (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:311:57)
    at Object.<anonymous> (/Users/nevadascout/Library/Application Support/Zed/extensions/work/angular/node_modules/@angular/language-server/index.js:215067:25)
    at Module._compile (node:internal/modules/cjs/loader:1358:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Module._load (node:internal/modules/cjs/loader:1024:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
    at node:internal/main/run_main_module:28:49

Node.js v20.16.0

I'm using Angular 18.1.2 - but as mentioned before the package.json that defines the angular version is not in the root of the project - its in a subfolder, with a different package.json in the root folder. Not sure if that makes a difference or not.

In theory the LSP is portable so if the neovim angular LSP is different to the official angular team have created (the vscode one you're using here) then you should be able to swap out the LSP backend of this extension for the other one 🤔 I'm not very experienced with Rust, otherwise I'd offer to help more 😅

nathansbradshaw commented 5 hours ago

I did add the ability to manually set the angular lsp version in your zed settings. However I am now running into issue on this branch as well.

The NeoVim one uses the same language server that we are using here https://github.com/iamcco/coc-angular/blob/master/package.json

The same for the Eclipse version https://github.com/eclipse-wildwebdeveloper/wildwebdeveloper/blob/master/org.eclipse.wildwebdeveloper/package.json

The Eclipse config seems to be closer to how zed is set up, so I think I'll look more into this after work today https://github.com/eclipse-wildwebdeveloper/wildwebdeveloper/blob/master/org.eclipse.wildwebdeveloper/src/org/eclipse/wildwebdeveloper/angular/AngularLanguageServer.java

nathansbradshaw commented 4 hours ago

~Yeah, I goofed something bad on the branch, I'll have to go back through it and find out what I did. For some reason, it didn't throw any errors for me, but the LSP just didn't work.~

Edit: It does work, I just forgot to reload my workspace after rebuilding.