2016-08-03 42 views
3

Ich arbeite an einer reaktiven Anwendung. Wo verwende ich webpack und babel loader. In meiner React-Anwendung verwende ich Import-Anweisung viele Male, die gut funktioniert.Uncaught SyntaxError: Unerwarteter Token-Import

Jetzt habe ich meine andere eigenständige Anwendung, die gut funktioniert. Jetzt installiere ich meine eigenständige Anwendung in react-Anwendung mit npm. So mache ich

let standAloneApplication = require("my_stand_alone_application") 

Aber ich bekomme Importfehler in der StandAloneApplication. Wo ich eine Zeile habe import controller from "./controller" // Main.js:1Uncaught SyntaxError: Unerwarteter Token-Import

wo als Import-Anweisung in React-Anwendung funktioniert. auch die Stand-Alone-Anwendung funktioniert gut alleine. aber zusammen gibt Es Syntax

meine webpack Datei

var webpack = require('webpack'); 
var path = require('path'); 

var BUILD_DIR = path.resolve(__dirname, 'html'); 
var APP_DIR = path.resolve(__dirname, 'html'); 

var config = { 
    entry: APP_DIR + '/app.js', 
    output: { 
    path: BUILD_DIR, 
    filename: 'bundle.js' 
    }, 
    devtool: "source-map", 
    node: { 
    fs: "empty" 
    } , 
     module : { 
    loaders : [ 
     { 
     test : /\.js?/, 
     include : APP_DIR, 
     exclude: /node_modules/, 
     loaders: ['babel?presets[]=react,presets[]=es2015,plugins[]=transform-decorators-legacy,plugins[]=transform-class-properties,plugins[]=transform-export-extensions'], 
     }, 

     { test: /\.json$/, loader: "json" } 
    ] 
    } 
} 

module.exports = config; 

main.js-Code von Stand-alone-Anwendung

import {Controller} from "./Controller/index.js" 

export class Main() { 

} 
+0

Könnten Sie versuchen, eine Datei .babelrc mit folgendem Inhalt verwenden: { „Voreinstellungen“: [ "es2015", "react"] }, und ich denke, dass Ihre path.resolve nicht 'htlm' sein sollte –

+0

Sollte es nicht ein ';' nach 'importieren {Controller} von" ./Controller/index.js "'? (nur wundernd) –

+0

Wenn das es2015 richtig läuft,; ist optional –

Antwort

4

Hinweis der exclude: /node_modules/ in Ihrem Loader-Setup.

Da Sie Ihre App/Ihr Modul unter Verwendung von npm installiert haben, befindet es sich in diesem Verzeichnis und wird aufgrund des Ausschlusses nicht von Babel übertragen.

Vielleicht, aber ich bin nicht sicher, können Sie es explizit auf die include Zeile hinzu:

include : [ 
    APP_DIR, 
    path.resolve(__dirname, 'node_modules/my_stand_alone_application') 
] 
+0

Funktioniert wie ein Charm –

+0

Dies funktioniert auch für mich, aber die bessere Lösung wird sein, einen Build auf meiner Bibliothek einzurichten (oder Ashisas Standalone- App), die das Zusammenstellen der es6 mit Babel beinhaltet. Dann ist die "dist" -Version wie gewohnt einsatzbereit, genau wie jedes andere npm-Paket. – seanTcoyote