Luca Matteis
Luca Matteis

Reputation: 29267

Javascript YUICompressor error

Using YUICompressor I get the following error from my javascript code:

    [ERROR] 270:201:missing name after . operator
    [ERROR] 292:6:missing ; before statement

Here's the javascript code at the following lines:

Line 270:

new _ow.getScript(_ow.wwwurl+'/widget/save?title='+encodeURIComponent(this.obj.title.value)+'&url='+encodeURIComponent(this.obj.url.value)+'&tags='+this.obj.tags.value+'&private='+this.obj.private.checked+'&c='+this.obj.notes.value+'&service='+services+'&token='+(_ow.token ? encodeURIComponent(_ow.token): ''), function(data) {

Line 292:

});

I can't figure out what the problem is since this Javascript code works fine on all browsers.


EDIT: I split the line in multiple lines and figured out that the "missing name after . operator" is generated by this code:

this.obj.private.checked

Is private a keyword that makes the YUI compressor go mad?

Upvotes: 7

Views: 7857

Answers (5)

cybafelo
cybafelo

Reputation: 21

you can download and install apache ant, download the yui source, edit the source code (in src folder, in the org and the com subfolders) to remove all references to the keyword blocking your progress (it goes quite fast, I edited about 3 to 4 files i think, had to run ant twice because the first time got a reference error, but all it took was deleting another line referring to the keyword) and once ant compiles successfully you have a brand new .jar and you can use this to compile your problematic js. did this with yuicompressor2-4.7 and the "import" keyword (used quite extensively in mozilla extension code)

Upvotes: 2

kowal
kowal

Reputation: 21

Remeber to use option --type js ex.

yuicompressor --type js -o comressed.js filetocompress.js

Upvotes: 2

Crescent Fresh
Crescent Fresh

Reputation: 116980

private is a reserved word.

Upvotes: 13

Ateş Göral
Ateş Göral

Reputation: 140050

First, I'd reformat the code to make it more readable:

new _ow.getScript(_ow.wwwurl
    + '/widget/save?title='
    + encodeURIComponent(this.obj.title.value)
    + '&url='
    + encodeURIComponent(this.obj.url.value)
    + '&tags='
    + this.obj.tags.value
    + '&private='
    + this.obj.private.checked
    + '&c='
    + this.obj.notes.value
    + '&service='
    + services
    + '&token='
    + (_ow.token
        ? encodeURIComponent(_ow.token)
        : ''),
    function(data) {
    });

Then, the line # reported by the compressor should help you drill down on what the problem is.

Upvotes: 3

Oli
Oli

Reputation: 239810

You could make your own life a lot easier just by breaking it out onto multiple lines. You're compressing it anyway, so it's not like it's going to make a difference to the final size...

Upvotes: 0

Related Questions