2016-11-03 17 views
2

誰かが何らかの光を当てると大変感謝してくれることでしょう。Gulp、Vue、Webpack、Babel、Uncaught SyntaxError:予期せぬトークンのインポート

Webpackを使用してVueと同様にES6ファイルで作業するための環境を設定しようとしています。

私はすべての依存関係をインストールして、以下のファイルを作成しました:

webpack.config.js

module.exports = { 

    entry: './resources/assets/source/js/app.js', 
    output: { 
     filename: 'app.js' 
    }, 
    devtool: 'source-map', 
    resolve: { 
     alias: { 
      'vue$': 'vue/dist/vue.js' 
     } 
    }, 
    module: { 
     loaders: [ 
      { 
       test: /\.js$/, 
       loader: 'babel', 
       exclude: /node_modules/, 
       query: { 
        presets: ['es2015'] 
       } 
      }, 
      { 
       test: /\.vue$/, 
       loader: 'vue' 
      } 
     ] 
    } 
}; 

gulpfile.js

var gulp  = require('gulp'), 
    webpack = require('webpack-stream'); 

gulp.task('script',() => { 

    "use strict"; 

    return gulp.src('./resources/assets/source/js/app.js') 
       .pipe(webpack(require('./webpack.config.js'))) 
       .pipe(gulp.dest('./public/assets/js/')); 

}); 

gulp.task('default', ['script']); 

リソースを/ assets/source/js/app.js

var Vue = require('vue'); 

import Alert from './components/Alert.vue'; 

new Vue({ 

    el: '#app', 

    components: { Alert }, 

    ready() { 
     alert('ready'); 
    } 

}); 

リソース/資産/ソース/ JS /コンポーネント/ Iは、gulpすべてがバンドルされ、コンパイルされたラングが、私は、ブラウザでそれを実行したとき、私はUncaught SyntaxError: Unexpected token importを得るAlert.vue

<template> 

    <div :class="alertClasses" v-show="show"> 
     <slot></slot> 
     <span class="Alert__close" @click="show == false">x</span> 
    </div> 

</template> 

<script> 

    export default { 

     props: ['type'], 

     data() { 
      return { 
       show: true 
      }; 
     }, 

     computed: { 

      alertClasses() { 

       var type = this.type; 

       return { 
        'Alert': true, 
        'Alert--Success': type == 'success', 
        'Alert--Error': type == 'error' 
       }; 

      } 

     } 
    }; 

</script> 

resources/assets/source/js/app.jsファイル内の行を指しています。

何が原因なのか理解しようとしてから、アイデアが足りなくなり、あきらめてしまったので、助けていただければ幸いです。

+0

BabelとWebpackのどちらのバージョンを使用していますか? – Aurora0001

+1

その[email protected]と[email protected] –

+0

'/ \。(js | vue)$/''から引用符を削除してみてください。正規表現としてそれをしたい。 – Aurora0001

答えて

2

webpack.config.jsファイルからクエリオブジェクトを削除し、このような内容を含む.babelrcファイルを作成する必要があります。

{ 
    "presets": ["es2015"], 
    "plugins": ["transform-runtime"], 
    "comments": false 
} 
+1

これは 'transform-runtime'なしでもうまく動作します - ありがとう@Belmin –

0

import問題は上記のコメントで解決されているようですが、もう1つあります。

.vue標準のJavaScript構文ではファイルが記述されていないようです。それらをインポートするには、JavaScriptに変換する必要があります。

webpack.config.jsを見ると、.vue拡張子のファイルは何らかの形で変換されません。

カスタムローダーでこの問題を解決できます。この場合は、あなたが探しているローダは、問題を解決するためにvue-loader

手順です: :一度行わ

  • npm install --save-dev vue-loader
  • 、以下moduleのセクションであなたのwebpack.config.jsを更新してみてください

    module: { loaders: [ { test: /\.js$/, loader: 'babel-loader', query: { presets: ['es2015'] } }, { test: /\.vue$/, loader: 'vue' }, ], }

    詳細:

    それはどのような方法で助けていますか?そうでない場合は、私に知らせてください。

+0

ありがとう@Maciej - 私はそれが解決していないのが怖いです。ローダーは 'vue'または' vue-loader'ですか? –

+0

こんにちは@seb、もう一度お試しください。私はローダーテストで不要なアポストロフィを取り除かなかったので、コードが更新されました。 –

+0

はい - あなたの例とまったく同じですが、運がないと私は恐れています。 –

関連する問題