16

我需要在我的工作机器上安装 Spidermonkey JS 引擎。我正在处理的项目有一个需要 Spidermonkey 或类似 js 二进制文件的 jslint 脚本。我尝试从源代码编译 Spidermonkey 并陷入依赖地狱。我尝试从 ubuntu 存储库安装 rhino 包,结果发现它很慢而且损坏了。今天早上,我成功编译了谷歌的 V8 引擎,并按照这里的说明构建了 v8jslint:

http://blog.stevenreid.co.uk/2011/06/27/jslint-command-line-tool-powered-by-v8/

v8jslint 有效,但一次只会 lint 一个文件。例如,

$ v8jslint foo/*.js

如果我在 foo 下有 a.js、b.js 和 c.js,v8jslint 只会 lint a.js。简单修复:我可以为此编写一个 bash 脚本。更大的问题是 v8jslint 与我们构建服务器上的 Spidermonkey jslint 不兼容。有没有人在最新版本的 Ubuntu 上成功构建 Spidermonkey,或者知道一个好的解决方法?

4

5 回答 5

21

你可以从源代码构建,但是蜘蛛猴在 ubuntu 上仍然可用,它刚刚被重命名为 "libmozjs"。安装“libmozjs-24-bin”,然后将其称为“js24”或将 /usr/bin/js24 符号链接到“js”,如下所示:

sudo apt-get install libmozjs-24-bin; sudo ln -sf /usr/bin/js24 /usr/bin/js
于 2015-02-18T19:29:40.370 回答
16

解决它。您需要“autoconf2.13”包。使用 apt-get 安装它。转到 Mozilla 上的 SpiderMonkey 源代码页面。找到 hg 存储库(链接如下)并下载 Mozilla 树的快照。不要克隆它,只需从顶部栏中获取存档为 .tar.gz 或 .tar.bz2 即可。

http://hg.mozilla.org/index.cgi/mozilla-central/file/tip

解压缩存档并 cd 到根目录。

$ cd js/src
$ autoconf2.13
$ ./configure
$ make

这应该会生成一个名为 js 的二进制文件。由于某种原因,当我运行 make install 时,它没有将 js 复制到 /bin/。我只是符号链接 /bin/js 指向 ~/.../mozilla/js/src/js。Lint 脚本现在可以工作了,我不必再开始构建来修复 lint 错误了:P

资源:

https://developer.mozilla.org/en/SpiderMonkey_Build_Documentation

注意:上面的链接调用 command autoconf-2.13。我认为这是一个错字;你想像autoconf2.13我在代码中写的那样使用。

于 2011-07-12T16:55:22.383 回答
6

更新:

看起来 spidermonkey-bin 不再可以通过启动板 ppa 获得

另外,当我尝试克隆它时,v8jslint 存储库已关闭。

于 2011-11-15T12:58:05.223 回答
5

此外,(通过#2:spidermonkey-bin 在 Ubuntu Lucid 中不可用 - 问题 - hallettj/jslint.vim - GitHub),可以使用PPA 进行 Launchpad 工程:“Canonical Launchpad 工程”团队

sudo add-apt-repository ppa:launchpad/ppa
sudo apt-get update
sudo apt-get install spidermonkey-bin
apt-cache show spidermonkey-bin
sudo apt-get install spidermonkey-bin # also installs extra: libmozjs2d

# .. and then: 
$ js --help
JavaScript-C 1.8.0 pre-release 1 2007-10-03
usage: js [-zKPswWxCij] [-t timeoutSeconds] [-c stackchunksize] [-o option] [-v version] [-f scriptfile] [-e script] [-S maxstacksize] [scriptfile] [scriptarg...]
$ js
js> var f = function(){ print("the answer is " + 42); }; 
js> f();
the answer is 42
js> ^C
$
于 2011-09-03T07:58:41.540 回答
3

安装包libmozjs-24-bin。它包含 Spidermonkey JavaScript shell 二进制文件/usr/bin/js24,您可以将其安装为命令的替代品js

sudo apt-get install libmozjs-24-bin
sudo update-alternatives --install /usr/bin/js js /usr/bin/js24 10
于 2016-02-26T11:28:22.500 回答