捆绑失败:D:\ RN \ AtmosphericMeshing- \ src \ router.js中的SyntaxError:D:/RN/AtmosphericMeshing-/src/router.js:意外的令牌(16:0)

问题描述 投票:0回答:1

大家,我在使用react-native编译项目时一直报错,我不知道怎么解决它,我找不到错误,请给我一些建议,非常感谢。

import React, { PureComponent } from 'react';
import { BackHandler, Platform, View, StatusBar, Text,Modal } from 'react-native';
import {
  addNavigationHelpers
} from 'react-navigation';
import { connect } from 'react-redux';
import moment from 'moment';
import SplashScreen from 'react-native-splash-screen';
import { loadToken, getNetConfig, saveNetConfig, loadNetConfig } from './dvapack/storage';
import { createAction, NavigationActions, getCurrentScreen } from './utils';
import NetConfig from './config/NetConfig.json';
import api from './config/globalapi';
import AppNavigator from './containers/';

*I don't know if this is the correct way of writing the router, and it has led to this problem.*
@connect(({ router }) => ({ router }))***//一直报这里的错误=I've been making mistakes here.***
class Router extends PureComponent {
  constructor(props) {
    super(props);
    this.state = {
      configload: true
    };
  }
  async componentWillMount() {
    let netconfig =await loadNetConfig(); 
    if (!netconfig && !netconfig != null) {
      if (NetConfig.isAutoLoad) {
        const newconfig = [];
        NetConfig.Config.map((item, key) => {
          const netitem = {};
          // netitem.neturl = `http://${item.configIp}:${item.configPort}`+api.appurl;
          netitem.neturl = `http://${item.configIp}:${item.configPort}`;
          if (key === 0) {
            netitem.isuse = true;
          } else {
            netitem.isuse = false;
          }
          newconfig.push(netitem);
        });
        saveNetConfig(newconfig);
        
      } else {
        this.setState({ configload: false });
        SplashScreen.hide();
      }
    }
    BackHandler.addEventListener('hardwareBackPress', this.backHandle);
  }
  async componentDidMount() {
    const user = await loadToken();
    this.props.dispatch(createAction('app/loadglobalvariable')({ user }));
     
  }
  componentWillUnmount() {
    if (Platform.OS === 'android') {
      BackHandler.removeEventListener('hardwareBackPress', this.backHandle);
      JPushModule.removeReceiveCustomMsgListener(receiveCustomMsgEvent);
      JPushModule.removeReceiveNotificationListener(receiveNotificationEvent);
      JPushModule.removeReceiveOpenNotificationListener(openNotificationEvent);
      JPushModule.removeGetRegistrationIdListener(getRegistrationIdEvent);
      JPushModule.clearAllNotifications();
    } else {
      DeviceEventEmitter.removeAllListeners();
      NativeAppEventEmitter.removeAllListeners();
    }
  }

  backHandle = () => {
    const currentScreen = getCurrentScreen(this.props.router);
    //登录
    if (currentScreen === 'Login') {
      return true;
    }
   
    if (currentScreen !== 'Home') {
      this.props.dispatch(NavigationActions.back());
      return true;
    }
  
    return false;
  }
  render() { 
    if (!this.state.configload) {
      return (
        <View style={{ flex: 1 }}>
          <StatusBar
            barStyle="light-content"
          />
          {/* <ScanNetConfig ScanSuccess={() => {
            this.setState({ configload: true });
          }}
          /> */}
          <Text>ScanNetConfig</Text>
        </View>
      );
    } 
    const { dispatch, router } = this.props;
    const navigation = addNavigationHelpers({ dispatch, state: router }); 
    return (
      <View style={{ flex: 1 }}>
        <AppNavigator navigation={navigation} />

      </View>
    );
  }
}

export function routerReducer(state, action = {}) {
  return AppNavigator.router.getStateForAction(action, state);
}

export default Router;

需要更多细节?

这是错误。捆绑失败:D:\ RN \ AtmosphericMeshing- \ src \ router.js中的SyntaxError:D:/RN/AtmosphericMeshing-/src/router.js:意外的令牌(16:0)

react-native
1个回答
0
投票

我发现解决方案.babelrc需要更改:

{
  "presets": ["react-native"],
  "plugins": [
    "syntax-decorators",
    "transform-decorators-legacy",
    ["import", { "libraryName": "antd-mobile" }]
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.