2017-09-03 57 views
0

我打這個錯誤,當我試圖定義我自己的自定義組件。反應錯誤 - 預期一個字符串或類/功能,但得到:undefined

// /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

啊,實際上它可能會導入React渲染器Shim,這要歸功於這個全局可用的Haste模塊:https://github.com/facebook/react-native/blob/6be550d85c29a6ded32dcfe1330577c202da9073/Libraries/Renderer/shims/ReactNative.js#L9 – jevakallio

回答

3

你自己的出口/進口看起來不錯。不知道這是否是問題,但線

import {..} from 'ReactNative'; 

應該是:

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

您可能希望用不同的錯誤(模塊未找到)崩潰,但由於this internal React Native file出口全球可用模塊「ReactNative」通過Haste,您的導入最終會選擇該文件。由於該文件不會導出屬性ViewText,代碼編譯得很好,但最終會導致未定義的變量。

編輯更多的上下文

的陣營本地捆綁(稱爲Metro)使用Facebook的自己的模塊系統(稱爲急速),它允許任何人來裝飾與評論@providesModule Name一個文件,然後從導入全球任何地方只要import ... from 'Name';

其中一個內部渲染器模塊聲明@providesModule ReactNative。所以當你導入from 'ReactNative'時,你得到了該模塊而不是構建錯誤。

+0

yes你是對的。問題在於反應原生拼寫錯誤。不知道爲什麼它沒有用錯誤的包名稱拋出錯誤。 – Sydney

+0

我在答案中進行了擴展 - 這有點神祕,但完全合乎邏輯:) – jevakallio

相關問題