【发布时间】:2018-05-06 10:47:30
【问题描述】:
我开始的一个小项目使用声明const 变量的节点模块(通过npm 安装)。运行测试这个项目很好,但是执行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,否则所有主流浏览器都支持这种语法。
有没有办法解决这个问题而无需更改该节点模块?
更新
我已经暂时(或永久)将 UglifyJS 替换为 Butternut 并且似乎可以正常工作。
【问题讨论】:
-
不是node版本的问题吗?您不需要像节点 8+ 一样有
const可用吗? (不确定它是什么时候引入的) -
我从 v4 开始就一直在使用
const。我目前正在使用 8.9.1 LTS。 -
好吧,那很奇怪。您看到的错误信息是什么?
-
@this.lau_ 与标题中的错误消息相同,但为了清楚起见,我也在问题中添加了它。
-
不一定非要与“const”有关。它可能是您需要的模块之一。
标签: javascript npm gulp babeljs uglifyjs2