Microsoft/vscode

Relative path does not in Typescript/Javascript cells in vscode Notebooks.

Open

#196.172 aberto em 21 de out. de 2023

Ver no GitHub
 (0 comments) (2 reactions) (1 assignee)TypeScript (10.221 forks)batch import
bughelp wantednotebook

Métricas do repositório

Stars
 (74.848 stars)
Métricas de merge de PR
 (Mesclagem média 11h 43m) (1.000 fundiu PRs em 30d)

Description

Does this issue occur when all extensions are disabled?: Yes/No

  • VS Code Version: 1.83.1
  • OS Version: windows 10

Steps to Reproduce:

  1. install https://marketplace.visualstudio.com/items?itemName=donjayamanne.typescript-notebook or https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter-renderers
  2. open a workspace
  3. create typescript file 'a.ts' with some exports in the workspace, for example export const a = 1
  4. create a notebook with one of the extensions and save it next to the typescript file.
  5. add a cell with language type 'typescript' or 'javascript'.
  6. import the exported symbol from step 3, for example: import {a} from './a.ts'
  7. right click on file name and click go to definition

Expected:

  1. The symbol imported normally.
  2. go to definition lead you to the file next to it

Actually:

  1. The import has a red underline with TS(2307) Cannot find module
  2. go to definition lead you to a error page that has a nonsense path like this 圖片

Note:

It seems this is caused by the way typescript language extension handles virtual paths. The typescript language extension put all virtual path under ^/{protocol}/{authority}/{file-path}#{cell-id} Which end up being treated as {workspace root}/^/{protocol}/{authority}/{file-path}#{cell-id} by the language server And thus broke all relative paths.

I made a experiment about appending the cell id and authority to file name instead, and it seems fix this issue.

https://github.com/mmis1000/vscode/commit/bb9910b06271537ef71427f21d75a955a7594b84

Related issue: https://github.com/DonJayamanne/typescript-notebook/issues/79

Guia do colaborador