读取json文件时始终"需要未知模块"

Joh*_*alo 1 react-native

这里有一个RN newb的位.我正在尝试读取一些json数据文件:

function loadCategories() {
  const ids = ['tl1', 'tl2', 'tl3', 'tl4', 'tl5', 'tl6'];
  ids.forEach(function(id) {
    var contents = require('../Content/top-level/' + id + ".json.js");
    ...
  });
}
Run Code Online (Sandbox Code Playgroud)

但在这里我总是得到一个错误:

未处理的JS异常:需要未知模块"../Content/top-level/tl1.json.js".如果您确定模块在那里,请尝试重新启动打包程序或运行"npm install".

根据项目结构,文件存在且我的相对路径逻辑应该是正常的:

ProjectDir
  Components
    ThisComponent.js
  Content
    top-level
      tl1.json.js
      tl2.json.js
      ...
Run Code Online (Sandbox Code Playgroud)

即上面的代码正在运行ThisComponent.js并尝试访问tl1.json.js等,所以我认为相对路径../Content/top-level/tl1.json.js会起作用.

我试过了:

  • 重启打包器
  • ./Content/top-level/tl1.json.js改为引用
  • /Content/top-level/tl1.json.js改为引用

我在RN 0.36.0.一定要明显......对吗?

vin*_*ayr 5

由于打包器的工作原理,这在React Native中是不可能的.您必须要求具有静态字符串路径的文件.你可以使用这样的开关语句 -

switch (id) {
  case 'tl1': return require('../Content/top-level/tl1.json');
  case 'tl2': return require('../Content/top-level/tl2.json');
  ...
}
Run Code Online (Sandbox Code Playgroud)

另外为什么你的json文件有.js扩展名?