2016-11-05 2 views
1

ビットの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"); 
    ... 
    }); 
} 

をしかし、ここで私は常にエラーを取得::私はいくつかのJSONデータファイルを読み込むしようとしている

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".

ファイルが存在し、私の相対パスロジックはOKプロジェクト構造を与えられるべきである。

上記のコードすなわち
ProjectDir 
    Components 
    ThisComponent.js 
    Content 
    top-level 
     tl1.json.js 
     tl2.json.js 
     ... 

ので、私は../Content/top-level/tl1.json.jsの相対パスをめざしと思うだろうThisComponent.jsから実行しているとtl1.json.jsなどにアクセスしようとしていますrk。

私が試してみた:

  • はパッケージャ
  • 代わり

私はRN 0.36.0によ/Content/top-level/tl1.json.jsを参照

  • 代わり./Content/top-level/tl1.json.jsの参照を再起動します。何か明白なことを...右か?

  • 答えて

    5

    これは、パッケージネームの仕組みのためにネイティブでは不可能です。静的な文字列パスを持つファイルを要求する必要があります。あなたのJSONファイルが.js拡張子を持っていない理由も

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

    - あなたはこのようなswitch文のものを使用することができますか?

    +0

    私は、これを正確に行い、動作するサンプルRNアプリを持っています。彼らは後のバージョンでこれを行う機能を削除しましたか? '.js'は、パッケージャが.jsや何かで終わるファイルしか見つけなかった場合のトラブルシューティングでした。 –

    +0

    以前に動作したかどうかは不明です。正確に1年前に作成されたこの問題を見てください。https://github.com/facebook/react-native/issues/3882 – vinayr

    +0

    react-native-fsのように見えますか? https://github.com/johanneslumpe/react-native-fs –

    関連する問題