首页 > 解决方案 > 每个模块只允许一个默认导出”,但只显示一个

问题描述

我有一个根“App.js”,它只包含一个“导出默认值”。它以前工作得很好(它主要只是使用 React Navigation 的应用程序的路由功能)。但是我需要查看标签何时聚焦所以我尝试实现这个库:https ://github.com/pmachowski/react-navigation-is-focused-hoc

现在,当我加载应用程序时,它给了我这个错误:

'无法加载 192.168 ..... 错误:../../src/App.js:每个模块只允许一个默认导出'

但我相信我只有一个;这是 App.js:

import React from 'react';
import { createBottomTabNavigator,createStackNavigator } from 'react-navigation';
import { updateFocus, getCurrentRouteKey } from 'react-navigation-is-focused-hoc'

import SearchTab from './components/Tabs/SearchTab';
import HomeTab from './components/Tabs/HomeTab';
import ScannerTab from './components/Tabs/ScannerTab';
import SettingsTab from './components/Tabs/SettingsTab';
import Ionicons from 'react-native-vector-icons/Ionicons';
import StockModal from './components/Modals/StockModal';

const MainStack = createBottomTabNavigator(
    {
        Home: HomeTab,
        Search: SearchTab,
        Scanner: ScannerTab,
        Settings: SettingsTab,
        //Todo: Total overlay modals HERE
    },
    {
        navigationOptions: ({ navigation }) => ({
            tabBarIcon: ({ focused, tintColor }) => {
                const { routeName } = navigation.state;
                let iconName;

                if (routeName === 'Home') {
                    iconName = `ios-information-circle${focused ? '' : '-outline'}`;
                } else if (routeName === 'Settings') {
                    iconName = `ios-options${focused ? '' : '-outline'}`;
                }else if (routeName === 'Scanner') {
                    iconName = `ios-barcode${focused ? '' : '-outline'}`;
                }else if (routeName === 'Search') {
                    iconName = `ios-search${focused ? '' : '-outline'}`;
                }
                return <Ionicons name={iconName} size={25} color={tintColor} />;
            },
        }),
        tabBarOptions: {
            activeTintColor: 'tomato',
            inactiveTintColor: 'gray',
        },
    }
);


DefaultStack = createStackNavigator(
    {
        Main: {
            screen: MainStack,
        },
        QuickStockScreen: {
            screen: StockModal,
        },
    },
    {
        mode: 'modal',
        headerMode: 'none',
    }
);

export default class App extends React.Component {

    render() {
        return (
            <DefaultStack
                onNavigationStateChange={(prevState, currentState) => {
                    // If you want to ignore the state changed from `DrawerNavigator`, use this:
                    /*
                      if (/^Drawer(Open|Close|Toggle)$/.test(getCurrentRouteKey(currentState)) === false) {
                        updateFocus(currentState)
                        return
                      }
                    */
                    updateFocus(currentState)
                }}
            />
        )
    }
}

还; 我解决此问题的另一种方法是当 React Navigation 中的选项卡聚焦时,另一个更“最新”的库或接收道具或状态的方法;即使从他们自己的问题线程来看,该方法也很混乱且不清楚。

Failed to load bundle(http://192.168.0.10:8081/index.bundle?platform=ios&dev=true&minify=false) with error:(SyntaxError: /Users/kenji/StockManager/src/App.js: Only one default export allowed per module. (73:0)

[0m [90m 71 | [39m}[0m
[0m [90m 72 | [39m[0m
[0m[31m[1m>[22m[39m[90m 73 | [39m[36mexport[39m [36mdefault[39m [33mRootStack[39m [33m=[39m createStackNavigator([0m
[0m [90m    | [39m[31m[1m^[22m[39m[0m
[0m [90m 74 | [39m    {[0m
[0m [90m 75 | [39m        [33mMain[39m[33m:[39m {[0m
[0m [90m 76 | [39m            screen[33m:[39m [33mMainStack[39m[33m,[39m[0m (null))

__38-[RCTCxxBridge loadSource:onProgress:]_block_invoke.248
    RCTCxxBridge.mm:422
___ZL36attemptAsynchronousLoadOfBundleAtURLP5NSURLU13block_pointerFvP18RCTLoadingProgressEU13block_pointerFvP7NSErrorP9RCTSourceE_block_invoke.118
__80-[RCTMultipartDataTask URLSession:streamTask:didBecomeInputStream:outputStream:]_block_invoke
-[RCTMultipartStreamReader emitChunk:headers:callback:done:]
-[RCTMultipartStreamReader readAllPartsWithCompletionCallback:progressCallback:]
-[RCTMultipartDataTask URLSession:streamTask:didBecomeInputStream:outputStream:]
<redacted>
<redacted>
<redacted>
<redacted>
_dispatch_client_callout
_dispatch_block_invoke_direct
_dispatch_client_callout
_dispatch_block_invoke_direct
dispatch_block_perform
<redacted>
_dispatch_client_callout
_dispatch_continuation_pop
_dispatch_async_redirect_invoke
_dispatch_root_queue_drain
_dispatch_worker_thread3
_pthread_wqthread
start_wqthread

标签: javascriptreactjsreact-nativereact-navigation

解决方案


所以我怀疑这是文件权限或类似问题的奇怪问题。我正在运行 hackintosh 以使用 xcode 开发 iOS,而真实设备测试和启动可能很奇怪;例如,加载关闭时“暂停”的内容有时不会正确运行。

情况就是这样,在适当的死重启后它修复了。在我恢复对 App.js 的更改后,我意识到这是一个问题,并且仍然显示完全相同的问题。


推荐阅读