我通过编译和安装来自root用户的node.js。我认为这可能是问题所在。从运行rails应用程序的用户中,我检查了node.js。
$ which node
/usr/local/bin/node
当我启动我的Rails应用程序(Rails 3.2.9)时,我得到了一个普遍无用的“抱歉,但出现了一些问题。”检查生产错误日志,我发现找不到Javascript运行时。这很令人困惑,因为显然已经安装了它。所以我开始强制使用Node Javascript运行时。我编辑了config/boot.rb文件,包含以下内容:
ENV['EXECJS_RUNTIME'] = 'Node'
我再次检查了我的应用程序,并观察生产日志。这一次,我遇到了错误。
ActionView::Template::Error (Node.js (V8) runtime is not available on this system
还是感到困惑。我去了execjs gem并把运行命令改成了精确的安装路径。
Node = ExternalRuntime.new(
:name => "Node.js (V8)",
:command => "/usr/local/bin/node",
:runner_path => ExecJS.root + "/support/node_runner.js",
:encoding => 'UTF-8'
)
我仍然遇到相同的错误。Node已经安装并且用户可以访问,但是gem/rails似乎无法使用它。 服务器运行的是CentOS 6.3。导致抛出错误的特定JavaScript文件是jquery.nivo.slider.pack.js。我从nivo下载后没有进行编辑。