Node.js没有被Rails / execjsfind
我通过编译并安装了root用户来安装node.js。 我想这可能是挂断的地方。 从运行rails应用程序的用户,我检查了node.js.
$ which node /usr/local/bin/node
当我启动我的Rails应用程序(Rails 3.2.9)时,我得到了普遍无用的“我们很抱歉,但出了问题。 检查生产错误日志我看到没有findJavascript运行时。 这很明显,因为它明显安装。 所以我去强制节点JavaScript运行时。 我编辑config / boot.rb包括:
ENV['EXECJS_RUNTIME'] = 'Node'
我再次查看我的应用程序,同时看着生产日志。 这一次我得到了错误
ActionView::Template::Error (Node.js (V8) runtime is not available on this system
仍然困惑。 我去了execjs的gem,并将运行时命令更改为确切的安装path。
Node = ExternalRuntime.new( :name => "Node.js (V8)", :command => "/usr/local/bin/node", :runner_path => ExecJS.root + "/support/node_runner.js", :encoding => 'UTF-8' )
我仍然得到同样的错误。 节点已安装并可由用户访问,但gem / rails似乎无法使用它。 服务器运行CentOS 6.3。 导致错误被引发的特定javascript文件是jquery.nivo.slider.pack.js。 从nivo下载后我没有编辑。
在我的centos 6.3系统上,我有类似的问题安装nodejs与源代码。 它已经成功安装了,但是我一直在编译我的ror应用程序资产失败,直到我明确地将PATH设置为它的安装位置(nodejs)
[root]#make install
…
安装/usr/local/lib/node_modules/npm/html/doc/folders.html
symlinking ../lib/node_modules/npm/bin/npm-cli.js – > / usr / local / bin / npm
将/ usr / local / bin / npm的shebang更新到/ usr / local / bin / node
[root]#export PATH = / usr / local / bin:$ PATH
现在起作用了。 希望有所帮助!
所以,我在CentOS 5.10上安装了Ruby 2.0.0,而Rails 4.0.2在Passenger上使用了Apache2。 我尝试的第一步是打开rails控制台并input以下命令:
ExecJS.runtime
它返回以下值:
#<ExecJS :: ExternalRuntime:0x99ab380 @ name =“Node.js(V8)”,@command = [“nodejs”,“node”],@ runner_path =“/ home / foo / vendor / bundle / ruby / 2.0。 0 / gems / execjs-2.1.0 /lib/execjs/support/node_runner.js“,@ encoding =”UTF-8“,@ deprecated = false,@ binary =”node“>
这意味着该节点确实已安装并检测到,但由于某种原因,该节点无法正常工作。
所以,我试着在网站上的例子:
ExecJS.eval("'red yellow blue'.split(' ')")
我得到了正确的答复。 所以,现在我想知道为什么乘客不接受。
然后,我注意到乘客显示pathvariables,它看起来像:
/home/foo/vendor/bundle/ruby/2.0.0/bin:/usr/local/rvm/gems/ruby-2.0.0-p481/bin:/usr/local/rvm/gems/ruby-2.0.0 -p481 @全球/斌:/usr/local/rvm/rubies/ruby-2.0.0-p481/bin:在/ usr / Kerberos的/ bin中:/ sbin目录:/ usr / sbin目录:/ bin中:在/ usr / bin中:/ USR /本地/ RVM /斌:/家庭/富/箱
但是,它似乎缺less了usr/local/bin
。 我不是Linux的专家,所以对我来说,解决这个问题最简单的方法就是使用符号链接。 所以,我执行ln -s /usr/local/bin/node /usr/bin/node
。 您可能要注意,我使用命令find / -name node
了我的nodejs的path。
然后,我刷新了我的Web应用程序,你不知道它的工作。 所以,如果它对我有用,我希望它可以帮助别人。
更新(可能更好的方法):这可能是一个更好的方法来做到这一点。 我们可以从源代码编译它,如下所示:
mkdir ~/install cd ~/install wget https://nodejs.org/dist/v7.2.1/node-v7.2.1.tar.gz tar xvf node-v7.2.1.tar.gz cd node-v7.2.1 ./configure --prefix=/usr/ make && make install
这样Node.js将被安装在Passenger期望的path中。
我不知道这是否会帮助,但检查你的$ PATH节点在那里。 另外,如果你想使用节点,你应该使用rvm。 检查您的节点安装是否正确完成。