如何在带有TypeScript的Nuxt中定义和使用自己的自定义服务?

时间:2020-10-14 06:51:05

标签: typescript vue.js nuxt.js

在制作TS Nuxt应用程序时,我意识到定义一个与API进行通信的ApiService是有意义的,因此我创建了一个名为services的文件夹并将其服务文件放入其中,因此我有了{{1} }。

文件内容类似

services/api-service.ts

我尝试将其导入到需要的布局中,例如:

import axios from 'axios'    
export default class ApiService {
      static someRequest(data: dataType) {
        return axios.get("someEndpoint", data)
      }
}

尽管我的IDE没有抱怨,但是Nuxt在编译时找不到它,给了我类似的错误消息

import ApiService from '@/services/api-service'
...
  created () {
  ...
    ApiService.someRequest(data)
      .then(someMethod)
      .catch(console.log)
  }

我试图将其包含为模块,但是显然模块仅限于导出函数,因此导出类是行不通的。制作插件似乎也不是合乎逻辑的解决方案。如何在TS Nuxt应用程序中使用自定义服务类(例如ApiService)?

1 个答案:

答案 0 :(得分:0)

将头撞在墙上约一天后,我找到了答案in this github issue

显然,我的@nuxt/typescript-runtime用TypeScript生成的应用附带的create-nuxt-app的版本是"@nuxt/typescript-runtime": "^1.0.0",已经过时了。

要解决此问题,我跑了

yarn add @nuxt/typescript-runtime --dev
在我的终端机上

升级到"@nuxt/typescript-runtime": "^2.0.0",现在我的导入工作正常。我在一个月前看到the package was bumped,所以希望没有其他人遇到相同的问题,如果他们愿意,我希望这个答案可以有所帮助。