React native “始终”;“需要未知模块”;读取json文件时
有点像个新手。我正在尝试读取一些json数据文件:React native “始终”;“需要未知模块”;读取json文件时,react-native,React Native,有点像个新手。我正在尝试读取一些json数据文件: function loadCategories() { const ids = ['tl1', 'tl2', 'tl3', 'tl4', 'tl5', 'tl6']; ids.forEach(function(id) { var contents = require('../Content/top-level/' + id + ".json.js"); ... }); } 但在这里我总是会遇到一个错误: 未处理的J
function loadCategories() {
const ids = ['tl1', 'tl2', 'tl3', 'tl4', 'tl5', 'tl6'];
ids.forEach(function(id) {
var contents = require('../Content/top-level/' + id + ".json.js");
...
});
}
但在这里我总是会遇到一个错误:
未处理的JS异常:需要未知模块“./Content/top-level/tl1.json.JS”。如果您确定模块存在,请尝试重新启动打包程序或运行“npm安装”
考虑到项目结构,文件存在且我的相对路径逻辑应正常:
ProjectDir
Components
ThisComponent.js
Content
top-level
tl1.json.js
tl2.json.js
...
i、 e.上面的代码运行于ThisComponent.js
并试图访问tl1.json.js
,因此我认为。/Content/top-level/tl1.json.js
的相对路径可以工作
我试过:
- 重新启动包装机
- 改为引用
/Content/top-level/tl1.json.js
- 改为引用
/Content/top-level/tl1.json.js
我在RN0.36.0上。必须是一些明显的东西…对吗?这在React Native中是不可能的,因为打包机是如何工作的。您必须要求文件具有静态字符串路径。您可以使用类似这样的switch语句-
switch (id) {
case 'tl1': return require('../Content/top-level/tl1.json');
case 'tl2': return require('../Content/top-level/tl2.json');
...
}
另外,为什么json文件有
.js
扩展名?这在React Native中是不可能的,因为打包程序是如何工作的。您必须要求文件具有静态字符串路径。您可以使用类似这样的switch语句-
switch (id) {
case 'tl1': return require('../Content/top-level/tl1.json');
case 'tl2': return require('../Content/top-level/tl2.json');
...
}
还有,为什么您的json文件有
.js
扩展名?我有一个示例RN应用程序,它可以做到这一点,并且可以正常工作。他们是否在以后的版本中删除了这样做的功能?.js
只是我的一个疑难解答,以防打包程序只找到以.js结尾的文件或其他文件。不确定它以前是否工作过。看看一年前创建的这个问题,看起来react native fs可能是一个选项。我有一个示例RN应用程序,它可以完全做到这一点,并且可以正常工作。他们是否在以后的版本中删除了这样做的功能?.js
只是我的一个疑难解答,以防打包程序只找到以.js结尾的文件或其他文件。不确定它以前是否工作过。看看一年前创建的这个问题,看起来react native fs可能是一个选项。