2017-09-03 10 views
0

独自のカスタムコンポーネントを定義しようとしているときにこのエラーが発生します。Reactnative error - 文字列またはクラス/関数が期待されていますが、取得済み:未定義

// /common/MyAppText.js 
import React, {Component} from 'react'; 
import { 
    Text, 
    View, 
} from 'ReactNative'; 

class MyAppText extends Component { 
    render(){ 
    return (
     <View> 
     <Text>hello</Text> 
     </View> 
    ) 
    } 
} 

export default MyAppText 

は他のアプリでは、私はそれをインポートし、

import MyAppText from './common/MyAppText' 
class Home extends Component { 
    render(){ 
    return (
     <View> 
     <MyAppText /> 
     </View> 
    ) 
    } 
} 

ことによってそれを使用しようとしましたが、私は「文字列またはクラス/機能を期待したが得たエラーを打つ:未定義、レンダリングご確認ください。 「MyAppText」というメソッドを使用すると、エクスポートの構文が間違っていることがわかりますか?

同じ文書内のすべてを定義した場合、それは機能するため、エクスポートできないものがあります。

+0

独自のエクスポート/インポートは正常です。これが問題であるかどうかはわかりませんが、 'ReactNative'の 'import {..} 'は' from' react-native''でなければなりません。何らかの理由でどこかに 'ReactNative'と呼ばれるモジュールがない限り、別のエラーでクラッシュすることが予想されます。 – jevakallio

+0

ああ、実際にはこの世界的に利用可能なHasteモジュールのおかげでReactレンダラシムがインポートされているでしょう:https://github.com/facebook/react-native/blob/6be550d85c29a6ded32dcfe1330577c202da9073/Libraries/Renderer/shims/ReactNative.js#L9 – jevakallio

答えて

3

あなた自身のエクスポート/インポートは上手く見えます。 (モジュールが見つからない)

import {..} from 'react-native'; 

あなたはそれが別のエラーでクラッシュを期待するかもしれないが、this internal React Native file以来、世界的にエクスポートします。これは問題ですが、ライン

import {..} from 'ReactNative'; 

をすべきかわかりませんHastを介して利用可能なモジュール "ReactNative"がインポートされると、そのファイルが選択されます。そのファイルはプロパティーViewTextをエクスポートしないため、コードは正常にコンパイルされますが、未定義の変数で終了します。より多くのコンテキストため

編集:

ザ・は(Metroと呼ばれる)ネイティブバンドラを反応させるのは、誰でもコメント@providesModule Nameでファイルを飾るし、その後からそれをインポートすることができます(速攻と呼ばれる)Facebookの独自のモジュールシステムを、使用しています全世界どこでもimport ... from 'Name';

内部レンダラーモジュールの1つが@providesModule ReactNativeと宣言しています。したがって、from 'ReactNative'をインポートした場合は、ビルドエラーの代わりにそのモジュールが取得されます。

+0

はいあなたが正しいです。問題は反応ネイティブのスペルミスであった。なぜそれが間違ったパッケージ名でエラーを投げなかったのか分かりません。 – Sydney

+0

私は答えでそれを拡張しました - それは少し秘密ですが、完全に論理的です:) – jevakallio

関連する問題