记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

报错信息如下:

1m[31mERROR in /var/lib/jenkins/workspace/CICD-libya-admin/src/main.ts[39m[22m
[2m59:9[22m No overload matches this call.
  Overload 1 of 2, '(plugin: PluginObject<unknown> | PluginFunction<unknown>, options?: unknown): VueConstructor<Vue>', gave the following error.
    Argument of type '{ new (): Plugin; prototype: Plugin; }' is not assignable to parameter of type 'PluginObject<unknown> | PluginFunction<unknown>'.
      Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }' but required in type 'PluginObject<unknown>'.
  Overload 2 of 2, '(plugin: PluginObject<any> | PluginFunction<any>, ...options: any[]): VueConstructor<Vue>', gave the following error.
    Argument of type '{ new (): Plugin; prototype: Plugin; }' is not assignable to parameter of type 'PluginObject<any> | PluginFunction<any>'.
      Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }' but required in type 'PluginObject<any>'.

经过对报错信息的分析,应该是ts类型不一致导致的。但是本地却是正常的,后来删除node_modules后重新运行,本地出现和测试环境一模一样的报错。于是,打开VS Code,找到src/main.ts文件进行查看。发现是以下代码出错。

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 

vue.use方法的类型为:

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 VueCompositionApi的类型为:

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 

初步推断:两个.ts文件都是node_modules中自带的,那问题应该出在版本上吧。于是上https://www.npmjs.com/ 搜索@vue/composition-api。

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 

发现上次发布是一天前,而我们Jenkins上上一次成功构建是11月12日。难道是因为我们下载到了最新版本导致不兼容吗?
带着疑问,我打开node_modules中的@vue/composition-api/package.json文件查看,果然,下载到了最新版本。

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 

新的疑问:package.json中不是定义了老的版本号吗?为什么会下载到最新版本?

记录一下Property 'install' is missing in type '{ new (): Plugin; prototype: Plugin; }

 

 

 

带着疑问我在网上搜索“如何锁定package.json中定义的依赖版本”,找到了解决方案。
npm shrinkwrap能够锁定package.json中定义的依赖版本。
执行后能够生成 npm-shrinkwrap.json文件,有了该文件,就不怕npm和cnpm给我们下载最新版本的依赖啦。

上一篇:vue学习---Vue实例与Vuecomponent实例之间的重要内置关系


下一篇:添加谷歌翻译到你的网站