迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 >

gulp+browserify编译es6方法及常见错误解决

作者:迹忆 最近更新:2022/12/11 浏览次数:

随着es6逐渐稳定成熟,在web开发中使用也越来越广泛。但是,浏览器对es6还没有达到完全兼容的地步。所以需要借助一些工具来对其进行编译。这里就介绍两个工具gulp和browserify来对es6进行编译打包。

对于gulpbrowserify的原理的介绍并不是这里的主要内容。本篇我们主要针对如何使用gulp和browserify来对es6编译进行一个说明,并且对其使用过程中出现的问题做一个介绍以及如何解决该类问题。

环境搭建

首先使用npm初始化一个package.json文件

$ npm init

然后需要安装gulp和browserify到本地项目中

$ npm install –save-dev gulp
$ npm install –save-dev browserify

接着还需要安装两个辅助的工具babelify 和 vinyl-source-stream

$ npm install –save-dev babelify
$ npm install –save-dev vinyl-source-stream

上面所有工具安装完成以后在package.json文件中会有以下依赖

devDependencies: {
    babel-preset-es2015: "^6.18.0",
    babelify: "^7.3.0",
    browserify: "^13.3.0",
    gulp: "^3.9.1",
    vinyl-source-stream: "^1.1.0"
 }

编写代码

首先在根目录下新建一个文件onmpw.es6.js

import {onmpw} from "./lib/onmpw";
var moma;
export default moma = function(){
    onmpw ();
    console.log('es6');
}
window.moma = moma;

然后在根目录下新建gulpfile.js文件。编写以下代码

var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
gulp.task('onmpw',function(){
    return browserify({
        entries: "./onmpw.es6.js",
        debug: true,
    })
    .transform(babelify)
    .bundle()
    .pipe(source('onmpwes6.js'))
    .pipe(gulp.dest('dist')); })
gulp.task('default',['onmpw']);

然后运行gulp

$ gulp

这里我们在根目录下运行gulp,并且gulpfile.js文件也在根目录下。所以gulp会自动读取gulpfile.js文件。如果gulpfile.js文件不再根目录下,我们还需要指定gulpfile.js所在位置。

$ gulp –gulpfile gulpfile.js所在目录

运行上述命令,顺利情况下会编译成功

[22:31:23] Using gulpfile /www/onmpw_plugins/ gulpfile.js
[22:31:23] Starting 'onmpw'...
[22:31:26] Finished 'onmpw' after 3.12 s
[22:31:26] Starting 'default'...
[22:31:26] Finished 'default' after 39 μs

但是事情总不是那么顺利,这时很可能会报一下错误

events.js:160
      throw er; // Unhandled 'error' event
      ^
SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'

错误解决

出现上述错误,我们首先就要去检查各个工具的版本。在package.json文件中我们可以找到browserify和babelify的版本分别为13.3.0和7.3.0。这是非常新的版本,需要借助babel-preset-es2015工具(至于其原理是什么,大家可以自行去脑补)。

$ npm install –save-dev babel-preset-es2015

然后修改gulpfile.js内容中的

return browserify({
        entries: "./onmpw.es6.js",
        debug: true,
    })
.transform(babelify)

改为

return browserify({
    entries: "lib/momaEntry.js",
    debug: true,
})
.transform(babelify.configure({
        presets:['es2015']
}))

也可以在根目录下新建 .babelrc 文件,然后写入以下内容

{
    presets:['es2015']
}

两种方式都是可以的。

当然了,既然知道是版本太新所引起的。除了上面添加辅助工具以外,还可以降低工具的版本。我自己经过试验,得出只是降低babelify的版本为6.0.2即可。

$ npm install –save-dev babelify@6.0.2

package.json依赖工具的内容如下

devDependencies: {
    babel-preset-es2015: "^6.18.0",
    babelify: "^6.0.2",
    browserify: "^13.3.0",
    gulp: "^3.9.1",
    vinyl-source-stream: "^1.1.0"
  }

这样我们就可以不用借助babel-preset-es2015这个工具了。也不用再修改gulpfile.js既可编译成功。

其实很多时候我们在搭建环境的时候按照网上的教程一步一步来做,发现工具都是一样的,该安装的一个也没有丢掉,为什么还是不能成功?其实这时我们就应该考虑软件的兼容性问题了。

上面出现的错误也是我自己在项目中碰到的。几经挫折算是解决了。这里将经验分享给大家作为开发中的一项参考。可能并不全面,但是希望大家能用的上。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Vue - An In-Depth Guide to Lifecycle Hooks

发布时间:2025/02/21 浏览次数:117 分类:Vue

Vue has many lifecycle hooks, and it can be confusing to understand the meaning or purpose of each one. In this article, we will explain the function of each lifecycle hook and how to use them.

gulp学习之察言观色watch函数

发布时间:2017/04/15 浏览次数:1215 分类:WEB前端

gulp.watch函数是用来监听文件的变化,当文件发生变化以后,可以通过回调函数或者指定的任务执行相应的内容。

gulp学习之你来我往 src和dest函数

发布时间:2017/04/13 浏览次数:4481 分类:WEB前端

gulp无疑是我接触过的最简单易用的。其配置参数简单,并且学习起来也很容易。本章介绍其两个函数src和dest。

npm安装模块出现的问题

发布时间:2017/03/29 浏览次数:1468 分类:WEB前端

解决npm安装模块儿时出现的问题:npm ERR! Refusing to install browserify as a dependency of itself。

Sweetalert详细介绍

发布时间:2017/01/10 浏览次数:6311 分类:WEB前端

Sweetalert是一款前端用的提示框插件,它提供了炫彩的形式,使我们的网页效果更加丰富。

简单7步让你成为一名优秀的Web开发人员

发布时间:2016/03/03 浏览次数:523 分类:观点与感想

你想成为一名Web开发人员,有一个问题,在技术行业还没有经验。你可能上了很多课程并且也写了很多个人项目,但是简历上经验一栏却始终和你没有什么关系。转型到一个新的领域并

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便