首页 > 解决方案 > Vue / Typescript:找不到模块'vue-simplemde'

问题描述

我可以毫无问题地导入大多数npm 模块,例如 axios、firebase 等,但由于某种原因import MDE from 'vue-simplemde'会引发错误:

Cannot find module 'vue-simplemde'.Vetur(2307)

编码:

<script lang="ts">
   import Vue from 'vue'
   import firebase from 'firebase/app' // Works!
   import MDE from 'vue-simplemde' // Cannot find module 'vue-simplemde'.Vetur(2307)
   import axios from 'axios' // Works!

   export default Vue.extend({
       [...]
   })
</script>

包.json:

[...]
"dependencies": {
    [...]
    "firebase": "^7.14.4",
    "vue-simplemde": "^1.0.6",
    [...]
  },
[...]

编译代码后编辑器确实可以工作,但错误仍然存​​在。我可以忽略这个错误// @ts-ignore,但是这个问题会在整个 Vue 组件的其余部分中产生类型检查问题,从而引发Property XX does not exist on type CombinedVueInstance...错误。注释掉这个导入可以解决这些问题。

我可以使这个包与打字稿兼容吗?
我可以在某处以某种方式声明一个模块吗?

标签: typescriptvue.jsimportnode-modules

解决方案


是的,您可以为此声明一个模块。

我假设您的目录中已经有一个“shims-vue.d.ts”文件src。如果没有,创建一个

// shims-vue.d.ts
declare module "*.vue" {
  import Vue from "vue";
  export default Vue;
}

declare module "vue-simplemde" {
  const mde: any;
  export default mde;
}


推荐阅读