2016-11-05 127 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 –