2016-11-25 11 views
2

ReactNativePropRegistryをReactネイティブパッケージにインポートします。反応ネイティブで条件付きでモジュールを解決する

React Native 0.38.0より前に'react/lib/ReactNativePropRegistry'からインポートしましたが、React Native 0.38.0では'react-native/Libraries/Renderer/src/renderers/native/ReactNativePropRegistry'に変更されています。

は、私は私のパッケージはので、私はこの

if(semver.gte(reactNativeVersion, '0.38.0-rc.0')) { 
    const ReactNativePropRegistry = require('react-native/Libraries/Renderer/src/renderers/native/ReactNativePropRegistry'); 
} else { 
    const ReactNativePropRegistry = require('react/lib/ReactNativePropRegistry'); 
} 

をした全く反応し、ネイティブのバージョンは0.38.0を含めた上でサポートすることにしたい。しかし、パッケージャは、静的モジュールを解決しようとしているようです。したがって、reactNativeVersionが0.38.0-rc.0未満であっても、このパスでモジュールを解決しようとします'react-native/Libraries/Renderer/src/renderers/native/ReactNativePropRegistry'これはエラーUnable to resolve module ...を投げます。

これを回避する方法はありますか?

答えて

1

動的インポートを実行することはできません。速攻@providesModule宣言を反応させるのネイティブパッケージャがnode-hasteを使用し、両方はネイティブ使用を反応させ、反応するためしかし、あなたは場所を指定せずに名前でモジュールをインポートすることができる場合があります

require('ReactNativePropRegistry'); 

私はそれを試していませんこの特定のモジュールですが、理論的にはうまくいくはずです。

RNの将来のバージョンであるパッケージャは、パッケージの境界をまたいでprovidesModuleという名前でモジュールを要求するサポートを中止する可能性があることを知っておくとよいでしょう。これは恒久的な解決策ではないかもしれません。

しかし、ライブラリで作業している場合は、最終的に0.38より古いバージョンのサポートを非難することができます。それとも既にできているのですか?

関連する問題