在 React Native 中加载 JSON 大文件 (2MB)
Load big JSON files (2MB) in React Native
我在 React Native 项目中需要用 JS 进行一些昂贵的计算,我需要使用大量预先计算的数据。
我已经将它们导出到 JSON 个文件(每个 ~2MB)中,当我需要它们时我正在加载这些文件:
export const getDataShootAngle = () => {
return [
require('./parsed_phi1.json'),
require('./parsed_phi2.json'),
require('./parsed_phi3.json'),
require('./parsed_phi4.json'),
require('./parsed_phi5.json'),
require('./parsed_phi6.json'),
];
};
但是当我这样做时出现错误:
Error: Requiring module "algorithm\data\parsed_phi6.json", which threw an exception: RangeError: Maximum call stack size exceeded, js engine: hermes
有没有办法在 React Native 中加载大量数据?我可以以二进制格式导出我的数据,但我不知道该怎么做。
此外,我想如果我只能在需要时加载数据就好了(有点像我尝试直接在函数内部使用 require()
而不是在顶部使用导入的方法文件)。
编辑:
我正在使用 Expo 开发我的应用程序,所以我正在使用 Expo Go 对其进行测试。我只是试图将它编译成一个 .apk
,结果发现这个错误并没有出现在这个上下文中。我想这是 Expo Go 的一个限制,如果仍然有调试应用程序的方法就好了。
我设法自己解决了这个问题。
问题出在使用 Hermes 引擎而不是 jsc
。
我不知道是什么原因造成的,但至少我可以继续开发我的应用程序。
为了改回默认值,我在 app.json
文件中将 hermes
替换为 jsc
:
// app.json
{
"expo": {
...
"jsEngine": "jsc",
...
}
}
我在 React Native 项目中需要用 JS 进行一些昂贵的计算,我需要使用大量预先计算的数据。
我已经将它们导出到 JSON 个文件(每个 ~2MB)中,当我需要它们时我正在加载这些文件:
export const getDataShootAngle = () => {
return [
require('./parsed_phi1.json'),
require('./parsed_phi2.json'),
require('./parsed_phi3.json'),
require('./parsed_phi4.json'),
require('./parsed_phi5.json'),
require('./parsed_phi6.json'),
];
};
但是当我这样做时出现错误:
Error: Requiring module "algorithm\data\parsed_phi6.json", which threw an exception: RangeError: Maximum call stack size exceeded, js engine: hermes
有没有办法在 React Native 中加载大量数据?我可以以二进制格式导出我的数据,但我不知道该怎么做。
此外,我想如果我只能在需要时加载数据就好了(有点像我尝试直接在函数内部使用 require()
而不是在顶部使用导入的方法文件)。
编辑:
我正在使用 Expo 开发我的应用程序,所以我正在使用 Expo Go 对其进行测试。我只是试图将它编译成一个 .apk
,结果发现这个错误并没有出现在这个上下文中。我想这是 Expo Go 的一个限制,如果仍然有调试应用程序的方法就好了。
我设法自己解决了这个问题。
问题出在使用 Hermes 引擎而不是 jsc
。
我不知道是什么原因造成的,但至少我可以继续开发我的应用程序。
为了改回默认值,我在 app.json
文件中将 hermes
替换为 jsc
:
// app.json
{
"expo": {
...
"jsEngine": "jsc",
...
}
}