我有关于VS代码自动完成和警告消息(红色摇摆线)的问题.在为TypeScrip文件中的导入指定绝对路径时,IntelliSense向我发出错误警告.我使用Tauri和Svelte作为框架.
我制作了以下用于调试问题的简单文件:
src/my_app.ts
:
import { my_value } from "@folder/my_test_file"
src/my/test/folder/my_test_file.ts
:
export let my_value = 8;
tsconfig.json
:
{
"extends": "@tsconfig/svelte/tsconfig.json",
"compilerOptions": {
"moduleResolution": "Node",
"target": "ESNext",
"useDefineForClassFields": true,
"module": "esnext",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
/**
* Typecheck JS in `.svelte` and `.js` files by default.
* Disable checkJs if you'd like to use dynamic types in JS.
* Note that setting allowJs false does not prevent the use
* of JS in `.svelte` files.
*/
"allowJs": true,
"checkJs": true,
"isolatedModules": true,
"baseUrl": "./",
"paths": {
"@folder/*": [
"src/my/test/folder/*"
],
"@src/*": [
"src/*"
]
},
},
"include": ["src/**/*.d.ts", "src/**/*.{svelte,ts,js}"],
"exclude": ["node_modules"],
"references": [{ "path": "./tsconfig.node.json" }]
}
我的目录:
package.json
:
{
"name": "piping-system-solver",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json",
"tauri": "tauri"
},
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^1.0.0-next.30",
"@tauri-apps/cli": "^1.0.0-rc.13",
"@tsconfig/svelte": "^2.0.1",
"svelte": "^3.44.0",
"svelte-check": "^2.2.7",
"svelte-preprocess": "^4.9.8",
"tslib": "^2.3.1",
"typescript": "^4.5.4",
"vite": "^2.9.9"
},
"dependencies": {
"@tauri-apps/api": "^1.0.0-rc.6",
"autoprefixer": "^10.4.7",
"module-alias": "^2.2.2",
"postcss": "^8.4.14",
"split-grid": "^1.0.11",
"svelte-drag-and-drop-actions": "^1.0.0",
"tailwindcss": "^3.1.0",
"vite-tsconfig-paths": "^3.5.0"
}
}
以下扩展的版本:
- VS代码的Svelte:v106.1.0
- 打字英雄:v3.0.0
在文件src/my_app.ts
中(和我的所有其他.ts文件中类似),TypeScrip在上面的代码行中不断发出以下警告:
"Cannot find module '@folder/my_test_file' or its corresponding type declarations."
...即使代码可以编译和工作.当键入绝对路径时,这也会影响代码完成.但是,在我的.svelte文件中指定绝对路径时,不会出现此警告,并且代码完成可以正常工作.
以下是所有值得提及的试验、 idea 和观察的 list :
- 相对路径是可行的,包括汇编和智商建议.
- 所有的svelte文件都可以通过指定绝对路径来完美地工作(
import { my_value } from "@folder/my_test_file"
在.svelte文件中没有错误,而IntelliSense建议使用子文件夹). - 我试过"重启TS服务器",但无济于事.
- 我看了this question本书,里面有很多关于如何解决这个问题的建议,但没有一个对我管用.
- 我已经安装了打字英雄.
- 我已经安装了从this link开始的vite-tsconfig-路径
- 我观察到,IntelliSense警告和建议根据tsconfig.ts文件中的更改动态更新,而实际的程序只在关闭和重新打开窗口时更新(NPM运行Tauri dev).
- 在.svelte文件中指定绝对路径是有效的,即使您删除tsconfig.json中的
"paths"
配置,不保留路径别名.它的工作原理是从"src"
开始(例如"src/some/path/file"
).看起来Svelte内置了别名"src"
这条路? - (新的)我现在注意到,在.svelte文件中,当开始双引号时,会建议更多的东西(.js文件、.ts文件、.json文件,其中还有文件夹),而在我的.ts文件中,只有模块被建议(根据this,建议前面的图片).
我也很想知道,这是否可能是Tauri,Svelte ogTypescript 中的一个错误.