Reputation: 51
When running a gulp task below I get the following error message from JSmin:
/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:40
stream.write(str);
^
TypeError: Object function (err) {
// Add the error to output
options.error += err;
} has no method 'write'
at fputs (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:40:18)
at error (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:89:9)
at action (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:218:25)
at jsmin (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:352:21)
at main (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:368:9)
at jsminFn (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.c.index.js:373:12)
at jsmin (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/node_modules/jsmin2/lib/jsmin.js:82:3)
at Object.Collector.addFile (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/lib/jsmin.sourcemap.js:24:19)
at Array.forEach (native)
at module.exports (/var/www/html/a/node_modules/gulp-jsmin/node_modules/jsmin-sourcemap/lib/jsmin.sourcemap.js:136:9)
/** Gulp Task **/
gulp.task('js', function() {
gulp.src('app/assets/javascripts/**/*.js')
.pipe(changed('public/assets/javascripts/min'))
.pipe(jsmin())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('public/assets/javascripts/min'));
gulp.src([ 'public/assets/javascripts/min/bootstrap.min.js','public/assets/javascripts/min/jquery.flexslider.min.js','public/assets/javascripts/min/waypoints.min.min.js',
'public/assets/javascripts/min/modernizr.custom.min.js','public/assets/javascripts/min/jquery.stapel.min.js', 'public/assets/javascripts/min/jquery.socialist.min.js',
'public/assets/javascripts/min/enscroll.min.min.js','public/assets/javascripts/min/jquery-ui-1.8.2.custom.min.min.js','public/assets/javascripts/min/pirobox_extended_min.min.js',
'public/assets/javascripts/min/jquery.masonry.min.min.js', 'public/assets/javascripts/min/functions.min.js'])
.pipe(concat('application.js'))
.pipe(gulp.dest('public/assets/javascripts/min/'));
});
Could someone help me figure out what's going on?
Upvotes: 1
Views: 203
Reputation: 223013
The short answer is that the node-jsmin2
module has a bug in it, introduced since revision 7d5f486f46b453d738057e97060e4805846bf4af.
In that revision, fputs
was modified to call stream.write(str)
instead of stream(str)
, and stdout
was modified to be an object containing write
and writeFromIndex
methods—but stderr
was not similarly modified. (That commit, BTW, means that the defaults for stdout
and stderr
, namely console.log
and console.error
, are no longer suitable. This has been alluded to in the TODO.md
change in that commit.)
Here's a quick "fix" (I contemplated sending a pull request, but decided against it):
diff --git a/lib/jsmin.js b/lib/jsmin.js
index 439957b..c6f9331 100644
--- a/lib/jsmin.js
+++ b/lib/jsmin.js
@@ -68,9 +68,11 @@ function jsmin(input) {
output += char;
}
},
- 'stderr': function (err) {
- // Add the error to output
- options.error += err;
+ 'stderr': {
+ 'write': function (err) {
+ // Add the error to output
+ options.error += err;
+ }
},
'exit': function (code) {
// Throw the collective error
Upvotes: 0