2016-11-05 124 views
1

位时,始终“需要未知模块”。我想读一些JSON数据文件:在阅读json文件

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

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

Unhandled JS Exception: Requiring unknown module "../Content/top-level/tl1.json.js".If you are sure the module is there, try restarting the packager or running "npm install".

该文件存在,我的相对路径逻辑应确定给予项目结构:

ProjectDir 
    Components 
    ThisComponent.js 
    Content 
    top-level 
     tl1.json.js 
     tl2.json.js 
     ... 

即上面的代码是从ThisComponent.js运行,并试图访问tl1.json.js,等于是我就想着../Content/top-level/tl1.json.js相对路径将禾RK。

我已经试过:

  • 重新启动打包
  • 引用./Content/top-level/tl1.json.js代替
  • 引用/Content/top-level/tl1.json.js代替

我在RN 0.36.0。得到一些明显的东西......对吧?

回答

5

由于包装工程师的工作方式,这在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

+0

我有一个示例RN应用程序完成这个工作。他们是否删除了某些更高版本的功能? '.js'只是我的疑难解答,因为打包者只能找到以.js结尾的文件。 –

+0

不知道它以前是否有效。看看一年前创建的这个问题https://github.com/facebook/react-native/issues/3882 – vinayr

+0

看起来像react-native-fs可能是一个选项。 https://github.com/johanneslumpe/react-native-fs –