当一个“*.vue”文件被分成不同的文件时,即:<script lang="ts" src="./x/script.ts">
VSCode 抛出错误;但是,serve
脚本没有。编译没有问题。错误与$refs
属性有关。VSCode 无法识别已注册组件的属性:
Property 'sideBarVisibilityChange' does not exist on type 'Vue'.
.
$refs
在脚本标签内声明为 SFC 组件时,如下所示:
$refs!: {
sideBarComponent: SideBar;
};
然后在方法中访问 SideBar 组件:
this.$refs.sideBarComponent.sideBarVisibilityChange(newState);
只要代码是 SFC,一切都可以正常工作。导入脚本时它会“中断”。该错误仅出现在 VSCode 中,这意味着当我运行npm run serve
( vue-cli-service serve
) 时,我没有收到任何错误!但是,我在 VSCodeProblems
窗口中得到了这个:Property 'sideBarVisibilityChange' does not exist on type 'Vue'.
ts(2339)。
我的设置:VSCode、Vue + TypeScript、vue-class-component、vue-property-decorator。
组件已导入。它ref
在模板内部声明为 a 。如果您想看一下,这里还有更多代码:https ://gist.github.com/JakubKoralewski/9d11bbb9535a96356466b37745630f8f
或者我目前正在研究的整个回购: https ://github.com/JakubKoralewski/dziennik_php_frontend/tree/class-components
我目前正在处理一些错误。他们不是针对这个问题的。
非常奇怪的是,当我尝试通过单击路径来跟踪从 Vue 文件到脚本的链接时,我收到了这个奇怪的错误:
Unable to open 'script.ts': File not found (file:///f:/f:/<path>/src/views/Authorized.vue/Authorized/script.ts).
即使我做了这个愚蠢的事情,让 VSCode 打开文件路径也不起作用,我像这样导入脚本,<script lang="ts" src="../Authorized/script.ts"></script>
这在逻辑上是荒谬的,但是在发生错误时显示正确的路径。确切地说,它仍然会发生。这意味着错误是f:/f:/
一部分。我认为这是一个 VSCode 怪癖,文件路径实际上是正确的,但是当我尝试创建一个像 VSCode 这样的文件时,我得到了另一个错误:
Error: ENOENT: no such file or directory, mkdir 'f:\f:'
但是,这似乎不是问题,因为我提供了文件的整个绝对路径,使后续链接工作,但这没有任何改变。
这是 VSCode 在开发者控制台中抛出的错误:
Error: Tree element not found: {
"resource": "/f:/<path>/src/views/Authorized/script.ts",
"owner": "typescript",
"code": "2339",
"severity": 8,
"message": "Property 'sideBarVisibilityChange' does not exist on type 'Vue'.",
"source": "ts",
"startLineNumber": 142,
"startColumn": 31,
"endLineNumber": 142,
"endColumn": 54
}
at s.getElementLocation (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:89:591)
at s.expandTo (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:89:187)
at $.reveal (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:925:744)
at W.revealMarkersForCurrentActiveEditor (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:4487:161)
at W.autoReveal (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:4486:961)
at W.onActiveEditorChanged (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:4484:350)
at W._register.e (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:4483:360)
at d.fire (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:73:436)
at setTimeout (file:///F:/PROGRAMY/VS Code/Microsoft VS Code/resources/app/out/vs/workbench/workbench.main.js:69:969)