》》》》【問題】在使用gulp打包的項目中,引入了一些採用es6語法編寫的js文件。致使在一些瀏覽器中識別不了出錯,例如IE和搜狗。html
》》》》【解決】使用babel作了處理。node
一、 cd進入項目下,依次安裝:es6
cnpm install gulp --save-dev cnpm install gulp-babel --save-dev cnpm install babel-preset-env --save-dev cnpm install babel-core --save-dev
二、 在gulpfile.js中引入並使用:npm
var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') //將ES6代碼轉譯爲可執行的JS代碼 .pipe(babel()) .pipe(gulp.dest('dist/static/scripts')) });
三、 新增文件.babelrc的內容以下:json
{ 「presets」: [「env」] }
一、 cd進入項目下,而後安裝包(語句與上步驟中語句類似,替換包名便可),gulpfile.json中gulp
"gulp": "^3.9.1", "gulp-babel": "^6.1.2", "babel-preset-es2015": "^6.5.0"
二、 而後進入gulpfile.js中使用:瀏覽器
var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') .pipe(babel({ presets: ['es2015'] })) .pipe(gulp.dest('dist/static/scripts')) });
》》》》【問題】在使用上述方法後,仍然會有錯誤,顯示識別不了Symbol對象。
》》》》【解決】使用babel-polyfillbabel
一、 cd進入項目目錄,安裝包:ui
cnpm install --save-dev babel-plugin-transform-runtime cnpm install --save-dev babel-polyfill
二、 在gulpfile.js任務中:code
require('babel-polyfill'); //放在第一行; var gulp = require('gulp'); var babel = require('gulp-babel'); gulp.task('es6', function(){ return gulp.src('src/js/*.js') .pipe(babel({ presets: ['es2015'], plugins: ['transform-runtime'] })) .pipe(gulp.dest('dist/static/scripts')) });
三、 可是到這一步我編譯後並無任何做用,IE瀏覽器下一樣仍是出現Symbol識別不了。因此在個人index.html主工程文件中須要使用去加載node_modules的babel-polyfill文件。
至此便可解決個人問題。