Jest 找不到模块 @env React Native

时间:2021-01-12 16:11:34

标签: reactjs typescript react-native jestjs

我目前在 React Native 应用程序 https://github.com/goatandsheep/react-native-dotenv 中使用处理 .env 时遇到了一些问题。

错误 => 无法从“src/api/api.ts”中找到模块“@env”

我目前正在测试我的 redux saga 以调用 api 端点:

import axios from 'axios';
import {API_URL} from '@env';

export default axios.create({
  baseURL: API_URL,
  responseType: 'json',
});

API 端点

export const sendCheckNumber = async (
  phoneNumber: string,
): Promise<AuthenticationTO> => {
  const response = await axios.get<AuthenticationTO>(
    `SendCheckNumber/${phoneNumber}`,
  );

  return response.data;
};

我正在使用 ts-jest package.json。我在文档中看到有可能在 ts-jest 中包含 bable,因为我使用 bable 将“module:react-native-dotenv”作为插件导入。我认为这已经解决了我的问题,但不幸的是它仍然失败。也许你们中的某个人有什么可能导致此错误的建议。

谢谢!!!

package.json

"jest": {
    "preset": "react-native",
    "transform": {
      "^.+\\.js$": "<rootDir>/node_modules/react-native/jest/preprocessor.js",
      "\\.(ts|tsx)$": "ts-jest"
    },
    "globals": {
      "ts-jest": {
        "babelConfig": "babel.config.js",
        "tsConfig": "tsconfig.jest.json"
      }
    },
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ],
    "modulePaths": [
      "<rootDir>/src"
    ],
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$"
  }

1 个答案:

答案 0 :(得分:-1)

这里的饲养员山羊和绵羊。我最近添加了一些关于如何完成的文档。看看documentation section on TypeScript。摘录如下:

<块引用>
  • 在您的项目中创建一个 types 文件夹
  • 在该文件夹内,创建一个 *.d.ts 文件,例如 env.d.ts
  • 在该文件中,将模块声明为以下格式:
declare module '@env' {
  export const API_BASE: string;
}

在此模块中添加所有 .env 变量。

  • 最后,将此文件夹添加到您的 typeRoots 文件的 tsconfig.json 字段中:
{
    "typeRoots": ["./src/types"],
}

让我知道这是否有效!