Vetur 错误 2300 重复标识符“(缺失)”

Vetur error 2300 Duplicate identifier '(Missing)'

我在打字稿 nuxt.js 应用程序中遇到 Vetur 的奇怪错误。它在所有组件的第一行显示此错误消息,无论它是空行还是有标记。

我不确定这个错误是什么时候开始出现的,或者它是什么意思?

任何帮助将不胜感激,非常感谢!

原来这是因为Vetur实验templateInterpolationService属性。通过在 vetur.config.js 文件中将其变为 false

module.exports = {
  settings: {
    /* .. */
    'vetur.experimental.templateInterpolationService': false
    /* .. */
  }
};

Vetur 停止了对我的组件的意外干扰。

接受的答案就像手指受伤时砍掉你的手臂!如果您禁用 templateInterpolationService,您将失去 Vetur 的很大一部分价值。

对我来说 Vetur v0.35.0 在我升级时坏了 typescript > 4.4

您可以通过在项目根目录中输入 npm ls typescript 来检查您使用的是哪个版本的打字稿。

如果您 运行宁 typescript 4.4.4(或更低),试试这个:

重新启动 Vue Lanaguage 服务器(在 VSCode 中):
查看 ->
命令面板.. ->
Vetur:重启 VLS(Vue 语言服务器)

如果您 运行宁 typescript 4.5 或更高,您可能会 运行 进入此错误。仍在努力寻找解决此问题的方法。

或者,要强制您的环境全面使用旧版本的打字稿,您可以确保您的 npm 版本为 8.3+ 并使用 package.json 的新“覆盖”部分:

...
  "overrides": {
    "typescript": "4.4.4"
  },
...

确保 vscode <=4.4.4 的 gloabal ts 版本。使用更新的 typescript 可能是一些依赖项(如 @microsoft/api-extractor)。

正在创建 vetur.config.js。在 settings 中设置 "vetur.useWorkspaceDependencies": "false"。示例:

module.exports = {
    settings: {
        "vetur.useWorkspaceDependencies": false,
        "vetur.experimental.templateInterpolationService": true
    }
}

正在检查 Vue Language Server 中的 vscode 输出面板,可能:

[INFO ] Find node_modules paths in xxxxxxx - 247ms
[INFO ] Loaded bundled typescript@4.4.4.
[INFO ] Loaded bundled prettier.
[INFO ] Loaded bundled @starptech/prettyhtml.
[INFO ] Loaded bundled prettier-eslint.
[INFO ] Loaded bundled prettier-tslint.
[INFO ] Loaded bundled stylus-supremacy.
[INFO ] Loaded bundled @prettier/plugin-pug.

成功!