1

我正在尝试在我的项目中使用 Nuxt.js 插件,但 WebStorm 无法正确识别插件公开的内容。

在我的例子中,它是一个 OpenAPI 客户端,并且在 WebStorm 中没有自动完成功能,我几乎无法使用它,而无需手动查找每个端点。

为了可视化问题,我创建了一个新项目作为复制器。

https://github.com/mklueh/nuxt-plugin-webstorm-autocomplete-reproducer

该插件只是公开了一个演示函数,我尝试从一个组件访问它。

我的插件.js

export default async ({app}, inject) => {
  inject("sdk", {
    "thisIsATestMethodThatShouldBeRecognized": function () {
      return "hello from plugin";
    }
  })
}

零件 带有 Nuxt.js 插件的 WebStorm 中未解析的变量 $sdk

无论出于何种原因,我无法在此复制器项目中启用 Node.js 编码辅助,但在我的实际项目中,它已启用。所以我不确定这是否相关以及问题的原因。

我如何确保 WebStorm 找到 Nuxt.js 插件公开的内容?

4

1 回答 1

1

事实证明,您必须显式使用 Vue.prototype 将 $sdk 注册到全局 Vue 上下文。

将我的插件更改为此可以解决问题

import Vue from "vue";

export default async ({app}, inject) => {
  const plugin = {
    "thisIsATestMethodThatShouldBeRecognized": function () {
      return "hello from plugin";
    }
  };

  Vue.prototype.$sdk = plugin;

  inject("sdk", plugin);
}
于 2021-12-05T08:43:00.107 回答