【问题标题】:Cannot find module axios - compatibility issue with typescript找不到模块 axios - 与打字稿的兼容性问题
【发布时间】:2021-05-07 01:39:12
【问题描述】:

我在我的 Typescript 项目中本地安装了 Axios,但在尝试导入它时会产生错误。错误:“找不到模块 axios”。

根目录

npm install --save-dev axios

src/app.ts

import axios from 'axios';

package.json

 "devDependencies": {
    "axios": "^0.21.1",

这与我的 tsconfig.json 有关。如果我删除此文件,则 axios 是已知的。如果我恢复此文件,VS Code 中会再次出现错误。我知道 Lodash 包有一个 Lodash 类型 (https://www.npmjs.com/package/@types/lodash) 可以使 lodash 与打字稿兼容。是否有 axios 的等价物?

我有这个文件 .\node_modules\axios\index.d.ts 应该可以帮助我解决打字稿兼容性问题。不知何故,它不起作用。

【问题讨论】:

  • 是开发依赖吗?
  • 试试这个 npm install --save axios 不要安装带有开发依赖的 axios

标签: javascript node.js typescript axios


【解决方案1】:

我的http.ts 文件中出现了同样的错误。

import axios, { Method, AxiosResponse } from 'axios';

const api = axios.create({
    baseURL: process.env.HOST_BACKEND,
  });
  
  const request = <T>(
    method: Method,
    url: string,
    params: any
  ): Promise<AxiosResponse<T>> => {
    return api.request<T>({
      method,
      url,
      params,
    });
  };
  
  export default request;

这是由于打字稿的使用而发生的。我通过使用@types/ 重新安装axios npm 包来解决,如下所示

npm install --save @types/axios

【讨论】:

    【解决方案2】:

    这似乎有帮助。它让 TS 了解 Axios。即使 Axios 应该开箱即用。

    npm install --save @types/axios
    

    【讨论】:

    • @types/axios 现在已弃用。 Axios 现在提供了它自己的类型定义。
    【解决方案3】:

    建议 - 使用: 改为npm install --save axios

    --save-dev 标志用于那些不属于您的应用程序的包,并且需要用于开发目的,例如运行测试、转译、编译代码等。

    但是 --save-dev 应该可以工作:

    1. 检查node_modules/axios文件夹是否存在。
    2. 尝试rm -rf node_modules 并再次运行npm install

    【讨论】:

    • 我试过了,没有变化。它与打字稿无法识别包裹有关。我知道这一点,因为它在删除 tsconfig.json 时有效。
    猜你喜欢
    • 2020-03-03
    • 2021-01-07
    • 2013-12-30
    • 1970-01-01
    • 2018-06-27
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多