-
-
Notifications
You must be signed in to change notification settings - Fork 223
Description
Describe the bug
The plugin won't initialize when the project folder contains two or more symbolic links that point to the root of the project and as a result no svelte related features like autocompletion work.
This happens for example when using svelte in a tauri project together with the cxx library.
When the project is compiled, cxx creates multiple symbolic links that point to the project root inside the target folder, as described here.
Reproduction
The issue can be reproduced with a newly created svelte project (using the default options):
npm create svelte@latest my-app
cd my-app
npm install
code .
Ensure svelte vs code plugin is on, then open e.g. Counter.svelte and try using autocompletion on "display_counter." and notice how it still works as expected.
Svelte plugin output at this point:
Initialize language server at file:///r%3A/my-app
Initialize new ts service at r:/my-app/jsconfig.json
Trying to load configs for r:/my-app
Loaded config at r:\my-app\svelte.config.js
SnapshotManager File Statistics:
Project files: 22
Svelte files: 7
From node_modules: 0
Total: 22
Initialize new ts service at
Trying to load configs for r:\my-app
Next create two symbolic link to the project root using powershell for example:
New-Item -Path test1 -ItemType SymbolicLink -Value .
New-Item -Path test2 -ItemType SymbolicLink -Value .
Afterwards restart the extension host in vscode and try autocompletion again.
It no longer works and only shows "Loading..." forever. The Svelte plugin output looks like this:
Initialize language server at file:///r%3A/my-app
Initialize new ts service at r:/my-app/jsconfig.json
Trying to load configs for r:/my-app
After the symbolic links are removed and the extension host is restarted, it works again.
Expected behaviour
The plugin should operate normally, regardless of any symbolic links to the project root.
System Info
- OS: Windows 11
- IDE: VSCode
Which package is the issue about?
Svelte for VS Code extension
Additional Information, eg. Screenshots
When only one symbolic link exists in the project, The autocompletion works, but the plugin contains some very interesting output, that may explain why it fails to load:
Initialize language server at file:///r%3A/my-app
Initialize new ts service at r:/my-app/jsconfig.json
Trying to load configs for r:/my-app
Loaded config at r:\my-app\svelte.config.js
Loaded config at r:\my-app\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
Loaded config at r:\my-app\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\test1\svelte.config.js
SnapshotManager File Statistics:
Project files: 22
Svelte files: 7
From node_modules: 0
Total: 22
Initialize new ts service at
Trying to load configs for r:\my-app
It seems that it looks for svelte.config.js files inside any folder it can find and runs into some infinite loop when there are multiple symbolic links.