Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Gedit中缩小JavaScript时命令行JavaScript输入参数问题_Javascript_Minify_Gedit_Spidermonkey - Fatal编程技术网

在Gedit中缩小JavaScript时命令行JavaScript输入参数问题

在Gedit中缩小JavaScript时命令行JavaScript输入参数问题,javascript,minify,gedit,spidermonkey,Javascript,Minify,Gedit,Spidermonkey,我想在Gedit中立即缩小我的JavaScript文件。我试着用脚本通过外部工具选项来实现。我已经安装了SpiderMonkey引擎。我将jsmin.js文件存储在/home/mushex/use/js/jsmin.js,并在同一目录下创建了一个名为jsmin-low.js的新js文件,其中包含内容 #!/usr/bin/js load('/home/mushex/use/js/jsmin.js'); var body = arguments[0], result = jsmin(

我想在Gedit中立即缩小我的JavaScript文件。我试着用脚本通过外部工具选项来实现。我已经安装了SpiderMonkey引擎。我将jsmin.js文件存储在/home/mushex/use/js/jsmin.js,并在同一目录下创建了一个名为jsmin-low.js的新js文件,其中包含内容

#!/usr/bin/js 

load('/home/mushex/use/js/jsmin.js');

var body = arguments[0],
    result = jsmin('', body, 1);
if (result) {
    print(result);
} else {
    print(body);
}
它打印出未定义的内容。为了进行调试,我将脚本更改为仅在参数打印操作中执行,并看到输入为null(未定义)。用于调试的文件源为

#!/usr/bin/js 
print(arguments[0]);
但当我在命令行中运行它时,它的输出是正确的。通过gedit,其他js命令行工具工作正常。不明白为什么我的输入参数不能传递

以下是我在gedit中为此工具设置的设置

任何帮助都将不胜感激
谢谢。

问题在于gedit将文档发送到程序的标准输入中,而不是作为命令行参数。SpiderMonkey shell有一个
readline()
函数,可以从stdin中读取一行,但是它无法知道何时到达EOF

如果您使用
File
支持编译SpiderMonkey,您可能会这样做,但我从未尝试过

如果使用,可以直接使用Java类,如下所示:

function readStdin() {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"]));
    var lines = [];
    var line;
    while ((line = stdin.readLine()) !== null) {
        lines.push(line);
    }
    return lines.join("\n");
}

var body = readStdin();

问题是gedit将文档发送到程序的标准输入中,而不是作为命令行参数。SpiderMonkey shell有一个
readline()
函数,可以从stdin中读取一行,但是它无法知道何时到达EOF

如果您使用
File
支持编译SpiderMonkey,您可能会这样做,但我从未尝试过

如果使用,可以直接使用Java类,如下所示:

function readStdin() {
    var stdin = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.System["in"]));
    var lines = [];
    var line;
    while ((line = stdin.readLine()) !== null) {
        lines.push(line);
    }
    return lines.join("\n");
}

var body = readStdin();

Rhino shell的下载在哪里?我的google fu让我失望了。@Matthew Crumley谢谢你,伙计,如果没有什么帮助的话,我想我会用Rhino来做(其实我并不太在乎,只是对如何做印象深刻)@Herms的资料来源在这里Rhino shell的下载在哪里?我的谷歌fu让我失望了。@Matthew Crumley谢谢你,伙计,如果没有什么帮助,我想我会用Rhino(其实我不太在乎它,只是对如何做印象深刻)@Herms的消息来源在这里