我目前在react原生应用程序中遇到一些问题https://github.com/goatandsheep/react-native-dotenv用于处理.env.
错误=>无法从"src/api/api.ts"中找到模块"@env">
我目前正在测试我的redux传奇,以调用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。我在文档中看到可以将bable包含在ts jest中,因为我使用bable将"module:react native dotenv"作为插件导入。我以为这已经解决了我的问题,但不幸的是,它仍然失败了。也许你们中的某个人有一些建议,可能是什么导致了这个错误。
谢谢!!!
软件包.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)$"
}
维护人员将在此处执行。我最近添加了一些关于如何做到这一点的文档。看看TypeScript的文档部分。以下是摘录:
- 在项目中创建
types
文件夹- 在该文件夹中,创建一个
*.d.ts
文件,例如env.d.ts
- 在该文件中,将模块声明为以下格式:
declare module '@env' { export const API_BASE: string; }
将所有.env变量添加到此模块中。
- 最后,将此文件夹添加到
tsconfig.json
文件的typeRoots
字段中:{ "typeRoots": ["./src/types"], }
请告诉我是否有效!
我修复了这个问题,如下所示。
import {API_URL} from '@env';`
添加了以下内容:
import {API_URL} from 'react-native-dotenv';
并在babel.config.js中添加下一个
module.exports = function (api) {
api.cache(true)
return {
presets: ["babel-preset-expo"],
plugins: [
[
"module:react-native-dotenv",
{
moduleName: "react-native-dotenv",
},
],
],
}
}
它对我很有效。