用于css的yuicompressor会因某些文件而引发错误

时间:2015-04-22 13:07:53

标签: css phpstorm yui-compressor

我刚尝试使用yuicompressor for CSS。适用于大多数文件,但对于它没有,并且给了我这个错误:

"C:\Program Files (x86)\JetBrains\PhpStorm 8.0.1\jre\jre/bin/java" -jar C:/nodejs/node_modules/yuicompressor/build/yuicompressor-2.4.8.jar style.css -o style.min.css
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.yahoo.platform.yui.compressor.Bootstrap.main(Bootstrap.java:21)
Caused by: java.lang.StackOverflowError
at java.util.regex.Pattern$Loop.match(Pattern.java:4663)

在这些行之后有一千个错误。

我在这里查看了另一篇文章,但它并没有解决它。它说了一些关于增加堆栈大小(?)的信息,如果这就是解决方案,我该怎么做?谷歌不会给我任何有用的回答。

提前感谢。

1 个答案:

答案 0 :(得分:0)

要增加堆栈大小,需要将-Xss选项传递给java。默认值为512k,尝试增加它,例如-Xss2048k

要执行此操作,您需要相应地修改node_modules\yuicompressor\nodejs\cli.js,方法是添加args.unshift('-Xss2048k');

var spawn = require('child_process').spawn,
    fs = require('fs'),
    compressor = require('./index'),
    args = process.argv.slice(2);

args.unshift(compressor.jar);
args.unshift('-jar');
args.unshift('-Xss2048k');
...

然后在文件监视器的“程序”字段中指定yuicompressor二进制文件的路径(如C:\Users\My.Name\AppData\Roaming\npm\yuicompressor.cmd)。

或者,使用java作为程序以不同的方式设置文件观察器:

Program: C:\Program Files (x86)\JetBrains\PhpStorm 8.0.1\jre\jre\bin\java.exe
Arguments: -Xss2048k -jar "C:\Users\My.Name\AppData\Roaming\npm\node_modules\yuicompressor\build\yuicompressor-2.4.8.jar " $FileName$ -o $FileNameWithoutExtension$.min.css