1

我正在使用react-native-localization库是我的 RN 项目。

我的 RN 版本是0.59.4

我已经让项目按预期在 android 上运行,但问题在于IOS构建。

npm安装了它们react-native-localizationreact-native-localize并按照他们的 github 手册中的描述使用 pod 链接了它们。

我做了我能做的一切,从链接到清理和多次构建项目。

但是我在运行时遇到了这个错误react-native-localize NativeModule.RNLocalize is null. To fix this issue try these steps,我做了控制台告诉我的事情,但徒劳无功。

有人可以告诉我我做错了什么吗?

4

1 回答 1

1

创建一个像这样的模拟文件(在根目录中):

__mocks__/react-native-localize.js

检查__mock__有两个下划线。

这是文件的一个示例:

const getLocales = () => [
  // you can choose / add the locales you want
  { countryCode: "US", languageTag: "en-US", languageCode: "en", isRTL: false },
  { countryCode: "FR", languageTag: "fr-FR", languageCode: "fr", isRTL: false },
];

// use a provided translation, or return undefined to test your fallback
const findBestAvailableLanguage = () => ({
  languageTag: "en-US",
  isRTL: false,
});

const getNumberFormatSettings = () => ({
  decimalSeparator: ".",
  groupingSeparator: ",",
});

const getCalendar = () => "gregorian"; // or "japanese", "buddhist"
const getCountry = () => "US"; // the country code you want
const getCurrencies = () => ["USD", "EUR"]; // can be empty array
const getTemperatureUnit = () => "celsius"; // or "fahrenheit"
const getTimeZone = () => "Europe/Paris"; // the timezone you want
const uses24HourClock = () => true;
const usesMetricSystem = () => true;

const addEventListener = jest.fn();
const removeEventListener = jest.fn();

export {
  findBestAvailableLanguage,
  getLocales,
  getNumberFormatSettings,
  getCalendar,
  getCountry,
  getCurrencies,
  getTemperatureUnit,
  getTimeZone,
  uses24HourClock,
  usesMetricSystem,
  addEventListener,
  removeEventListener,
};

您不必导入node_moduleof,react-native-localization因为下面的每个文件__mocks__都会被自动模拟。

尝试再次运行测试并检查错误是否仍然存在。

编辑:就我而言,我需要的唯一功能react-native-localizeuses24HourClock()我的模拟文件非常短:

const uses24HourClock = () => false;

export { uses24HourClock };

这就是我的全部。

于 2020-07-31T20:22:25.513 回答