2016-04-19 8 views
10

既存のReact Nativeプロジェクト(バージョン0.22.2)があり、特定のファイルに対してフロータイプチェッカー(バージョン0.23)を設定しようとしています。ただし、<Image>ソースに使用しているrequire()の呼び出しでは、フローに多くのエラーが発生しています。ネイティブが細かい処理し、それが動作リアクト<Image>ソースの「必須モジュールが見つかりません」というメッセージフロー

<Image source={require('./images/nav.png')} style={styles.navIcon} /> 

:たとえば、私たちはHeader.jsにおける当社の構成要素の一つで、このコードを持っています。しかし、流れは通常のモジュールとしてrequire()を治療しようとしているように見える必要が、それを見つけていない、とこのようなエラーを与える:

Header.js:30 
30: <Image source={require('./images/nav.png')} style={styles.navIcon} /> 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ./images/nav.png. Required module not found 

どのように私は、これらのエラーを与えて停止するようにフローを伝えることができますか?私は.flowconfig[ignore]セクションに.*/images/.*を追加しようとしましたが、何も変わりません。

+0

で解決JPGファイルは、私は好奇心が強いため、同じ問題を持っていた [静止最新の](https://github.com/facebook/react-native/issues/784#issuecomment-94208658)フローは私にとって新しいプロジェクトで実行されません。すぐに提供されているものを超えてカスタムignore/includeルールを追加しましたか?これが本当に唯一の問題である場合、それを要点として分かち合うよう心がけてください。 –

+0

私は、「反応ネイティブの初期化」のほとんどの設定を使用していると思います。 –

+0

それは...?奇妙な私はnode_modulesからあらゆる種類のエラーを取得します。 .flowconfigを要点として共有しようと思いますか? –

答えて

9

.flowconfigでmodule.name_mapper.extensionオプションを使用できます。たとえば、代わりにrequire('./foo.png')を書くのあなたはrequire('./path/to/root/ImageSourceStub')を書いたかのように、ImageSourceStubモジュールに.pngで終わる任意のモジュール名をマッピングします

[options] 
module.name_mapper.extension= 'png' -> '<PROJECT_ROOT>/ImageSourceStub.js.flow' 

フロー require('*.png'){uri: string}を返すことを知っているように、あなたは

const stub = { 
    uri: 'stub.png' 
}; 
export default stub; // or module.exports = stub; 

を行うことができますImageSourceStub.js.flow

Advanced Configurationも参照してください。

+1

'= 'png''を' =' png''に倒す必要があることに注意してください。 – MoOx

0

リアクションネイティブのフローが今日は本当にダーティなように見えるだけでなく、フローが単純にこの使用法をサポートしていないと私は驚きませんが、私は大好きです全く驚いた!

個人的には、回避策として、上位レベルのコンポーネントを追加し、そのファイルのフローエラーを無視するだけです。

// Picture.js 
// (No @flow tag at top of file) 
const Picture = ({ source }) => (
    <Image source={require(source)} /> 
) 

代わりに<Picture source="my/path/pic.jpg" />を使用してください。

0

この.flowconfig

module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' 
module.name_mapper='^[./a-zA-Z0-9$_-]+\.png$' -> 'RelativeImageStub' 
module.name_mapper='^[./a-zA-Z0-9$_-]+\.jpg$' -> 'RelativeImageStub' 
+0

私はそれは動作しません...私は本当に流れに不満を感じている。 – pietro909

関連する問題