Tusshu
Tusshu

Reputation: 1734

Gulp error for Polymer Start Kit on OSX

Downloaded Polymer starter kit 1.3.0 on MAC OSX El Capitan 10.11.4

Node.js V6.0.0

Followed direction here: https://github.com/PolymerElements/polymer-starter-kit#getting-started

gulp command gives following error. Help please!

enter image description here

Upvotes: 0

Views: 87

Answers (1)

user600838
user600838

Reputation:

I think it's a bug in gulp-if (which pipes *.js to gulp-uglify) when running under Node v6.0.0. The log error shows that gulp-uglify is choking on app/styles/main.css, which is odd since it's only supposed to be given *.js.

{ Error
    at new JS_Parse_Error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1526:18)
    at js_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1534:11)
    at croak (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2026:9)
    at token_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2034:9)
    at unexpected (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2040:9)
    at semicolon (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2060:56)
    at simple_statement (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2240:73)
    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2113:19)
    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2073:24)
    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2827:23)
  message: '/Users/tony/Downloads/polymer-starter-kit-1.3.0/app/styles/main.css: Unexpected token: punc ({)',
  fileName: '/Users/tony/Downloads/polymer-starter-kit-1.3.0/app/styles/main.css',
  lineNumber: 10,
  stack: 'Error\n    at new JS_Parse_Error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1526:18)\n    at js_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:1534:11)\n    at croak (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2026:9)\n    at token_error (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2034:9)\n    at unexpected (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2040:9)\n    at semicolon (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2060:56)\n    at simple_statement (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2240:73)\n    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2113:19)\n    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2073:24)\n    at eval (eval at <anonymous> (/Users/tony/Downloads/polymer-starter-kit-1.3.0/node_modules/uglify-js/tools/node.js:22:1), <anonymous>:2827:23)',
  showStack: false,
  showProperties: true,
  plugin: 'gulp-uglify' }

A workaround is to downgrade Node to 5.11.0 (e.g., $ brew switch node 5.11.0).

UPDATE: I tracked the issue down to gulp-match, which is used by gulp-if to check whether the given filename matches a pattern.

You can use this workaround with Node 6.0.0 or earlier versions:

  1. In Polymer Starter Kit's gulpfile.js, add the following:

    var filter = function(pattern) {
      return function(file) {
        if (typeof pattern === 'string') {
          var newCond = pattern.substring(1).replace(/\./g,'\\.')+'$';
          pattern = new RegExp(newCond);
        }
        return pattern.test(file.relative);
      };
    };
    
    var _if = function(pattern, trueChild, falseChild, minimatchOptions) {
      return $.if(filter(pattern), trueChild, falseChild, minimatchOptions);
    };
    
  2. In optimizeHtmlTask(), replace $.if with _if.


See Polymer Issue #880, gulp-match issue #12

Upvotes: 1

Related Questions