2016-05-10 13 views
0

ich GiftedMessager Portierungunerwartetes Token-Modul Build fehlgeschlagen: Syntax

1: https://github.com/FaridSafi/react-native-gifted-messenger auf web. ich in der Lage gelöst previous Problem

Jetzt i in neuem Problem stecken, bin ich in dem Hafen nicht in der Lage zu reagieren-native-analysiert Text. Fehler i auf Terminal-Fenster gefunden ist

[684] ./~/react-native-communications/AKCommunications.js 5.16 kB {0} [built] 

ERROR in ./~/react-native-parsed-text/src/ParsedText.js 
Module build failed: SyntaxError: /Users/Gaurav/WebWork/ReactWeb/Practise/react-native-web-exploding-hearts-master/node_modules/react-native-parsed-text/src/ParsedText.js: Unexpected token (23:21) 
    21 | class ParsedText extends React.Component { 
    22 | 
> 23 | static displayName = 'ParsedText'; 
    |     ^
    24 | 
    25 | static propTypes = { 
    26 |  ...React.Text.propTypes, 

Meine Web-Config ist,

'use strict'; 

var path = require('path'); 
var webpack = require('webpack'); 
var HtmlPlugin = require('webpack-html-plugin'); 
var HasteResolverPlugin = require('haste-resolver-webpack-plugin'); 

var IP = '0.0.0.0'; 
var PORT = 3000; 
var NODE_ENV = process.env.NODE_ENV; 
var ROOT_PATH = path.resolve(__dirname, '..'); 
var PROD = 'production'; 
var DEV = 'development'; 
let isProd = NODE_ENV === 'production'; 

var config = { 
    paths: { 
    src: path.join(ROOT_PATH, '.'), 
    index: path.join(ROOT_PATH, 'index.ios'), 
    }, 
}; 

module.exports = { 
    ip: IP, 
    port: PORT, 
    devtool: 'source-map', 
    resolve: { 
    alias: { 
     'react-native': 'react-web', 
     'ReactNativeART': 'react-art', 
    }, 
    extensions: ['', '.js', '.jsx'], 
    }, 
    entry: isProd? [ 
    config.paths.index 
    ]: [ 
    'webpack-dev-server/client?http://' + IP + ':' + PORT, 
    'webpack/hot/only-dev-server', 
    config.paths.index, 
    ], 
    output: { 
    path: path.join(__dirname, 'output'), 
    filename: 'bundle.js' 
    }, 
    plugins: [ 
    new HasteResolverPlugin({ 
     platform: 'web', 
     nodeModules: ['react-web'] 
    }), 
    new webpack.DefinePlugin({ 
     'process.env': { 
     'NODE_ENV': JSON.stringify(isProd? PROD: DEV), 
     } 
    }), 
    isProd? new webpack.ProvidePlugin({ 
     React: "react" 
    }): new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoErrorsPlugin(), 
    new HtmlPlugin(), 
    ], 
    module: { 
    loaders: [{ 
     test: /\.json$/, 
     loader: 'json' 
    }, { 
     test: /\.jsx?$/, 
     loaders: ['react-hot','babel?stage=1'], 
     include: [config.paths.src], 
     exclude: ['/node_modules/', '/node_modules/react-native-gifted-messenger'] 
    },] 
    } 
}; 

Und mein ParseText Code ist,

import React from 'react-native'; 

import TextExtraction from './lib/TextExtraction'; 

const PATTERNS = { 
    url: /https?:\/\/(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\+.~#?&\/\/=]*)/, 
    phone: /[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}/, 
    email: /\[email protected]\S+\.\S+/, 
}; 

const defaultParseShape = React.PropTypes.shape({ 
    ...React.Text.propTypes, 
    type: React.PropTypes.oneOf(Object.keys(PATTERNS)).isRequired, 
}); 

const customParseShape = React.PropTypes.shape({ 
    ...React.Text.propTypes, 
    pattern: React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.instanceOf(RegExp)]).isRequired, 
}); 

class ParsedText extends React.Component { 

    static displayName = 'ParsedText'; 

    static propTypes = { 
    ...React.Text.propTypes, 
    parse: React.PropTypes.arrayOf(
     React.PropTypes.oneOfType([defaultParseShape, customParseShape]), 
    ), 
    }; 
+0

Sie benötigen [Klasse Eigenschaften] (https://github.com/jeffmo/es-class-fields-and-static-properties) durch Babel zu ermöglichen, für die Syntax zu arbeiten. Es ist nicht Standard ES6. –

+0

Es sieht so aus, als ob du eine alte Version von babel-loader benutzt (was von babel <6 abhängt), weil du 'babel? Stage = 1' hast. Wenn Sie tatsächlich eine neuere Version verwenden, wird dieser "stage" -Abfrageparameter nichts tun. In diesem Fall müssen Sie Ihre Voreinstellungen in einer .babelrc-Datei definieren. – riscarrott

+0

@bebraw, riscarrott, Danke für Ihren Beitrag. Antwort gegeben durch BANANENMANNFRAU funktionierte richtig auf Mac-Plattform, aber es scheiterte und das gleiche Problem, das mich auf Windows OS-Plattform gibt. – Tirth

Antwort

1

Das static Schlüsselwort nur für Methoden in ES6 ist.

Verwenden Sie const, um die Variable zu deklarieren.

Source

+0

danke für deine antwort. Ihre Lösung funktionierte in Mac OSX, aber es scheitert in Windows OS-Plattform. – Tirth

+0

Das scheint unwahrscheinlich. Sind Sie sicher, dass auf Ihrer Windows-Maschine alles korrekt eingerichtet ist? Erhalten Sie genau die gleiche Fehlermeldung? –

+0

ja genau der gleiche Fehler. – Tirth