我开始的一个小项目使用了一个通过npm安装的节点模块声明了const
变量。运行和测试这个项目很好,但是当执行UglifyJS时,browserify会失败。
意外的标记:关键词(const)
这里有一个通用的Gulp文件,我之前在几个其他项目中成功地使用过,没有遇到这个问题(即没有使用那个特定的节点模块)。
gulpfile.js
'use strict';
const browserify = require('browserify');
const gulp = require('gulp');
const source = require('vinyl-source-stream');
const derequire = require('gulp-derequire');
const buffer = require('vinyl-buffer');
const uglify = require('gulp-uglify');
const sourcemaps = require('gulp-sourcemaps');
const gutil = require('gulp-util');
const path = require('path');
const pkg = require('./package');
const upperCamelCase = require('uppercamelcase');
const SRC_PATH = path.dirname(pkg.main);
const DIST_PATH = path.dirname(pkg.browser);
const INPUT_FILE = path.basename(pkg.main);
const OUTPUT_FILE = path.basename(pkg.browser);
const MODULE_NAME = upperCamelCase(pkg.name);
gulp.task('default', () => {
// set up the browserify instance on a task basis
var b = browserify({
entries: INPUT_FILE,
basedir: SRC_PATH,
transform: ['babelify'],
standalone: MODULE_NAME,
debug: true
});
return b.bundle()
.pipe(source(OUTPUT_FILE))
.pipe(buffer())
.pipe(derequire())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(DIST_PATH))
;
});
我尝试通过将那个npm安装的模块中所有的const
替换为var
来修复这个问题,一切都正常。所以我不明白出了什么问题。
const
有什么问题吗?除非有人使用IE10,否则所有主要浏览器都支持这种语法。
有没有办法在不需要更改该Node模块的情况下修复它?
更新
我已经暂时(或永久)用Butternut替换了UglifyJS,并且似乎可以工作。
const
吗?(不确定它是什么时候引入的) - laurentconst
。目前我正在使用8.9.1 LTS。 - Yanick Rochon