将Vue脚本作为单独的文件导入带有vue-class-component

时间:2019-03-15 15:28:19

标签: typescript vue.js visual-studio-code vue-class-components

将“ * .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 servevue-cli-service serve)时,我没有任何错误!但是,我是在VSCode Problems窗口中找到的:Property 'sideBarVisibilityChange' does not exist on type 'Vue'. ts(2339)。

我的设置:VSCode,Vue + TypeScript,vue-class-component,vue-property-decorator。

组件已导入。在模板中将其声明为ref。 如果您想看一看下面的代码: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:'

但是,这似乎不是问题所在,因为我提供了使Follow链接正常工作的文件的完整绝对路径,但这并没有改变。

这是在开发者控制台中抛出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)

0 个答案:

没有答案