Node.js not found by Rails / execjs

2019-07-17 21:53发布

我已经通过编译,并从root用户安装它安装的node.js。 我想,这也许在挂机的。 从用户运行Rails应用程序我查node.js中

$ which node
/usr/local/bin/node

当我开始了我的Rails应用程序(Rails的3.2.9),我得到了普遍无益“很抱歉,但出事了。” 检查我看到JavaScript运行未找到生产错误日志。 这是令人困惑,因为它明明安装了。 所以我去有关强制节点JavaScript运行。 我编辑的config /的boot.rb包括:

ENV['EXECJS_RUNTIME'] = 'Node'

我检查了一遍我的应用程序,一边看生产日志。 这一次,我得到了错误

ActionView::Template::Error (Node.js (V8) runtime is not available on this system

仍然混淆。 我去了execjs宝石,改变运行命令的确切安装路径。

Node = ExternalRuntime.new(
  :name        => "Node.js (V8)",
  :command     => "/usr/local/bin/node",
  :runner_path => ExecJS.root + "/support/node_runner.js",
  :encoding    => 'UTF-8'
)

我仍然得到同样的错误。 节点安装和用户但创业板进入/轨道似乎无法使用它。 服务器运行的CentOS 6.3。 造成抛出错误的具体JavaScript文件是jquery.nivo.slider.pack.js。 我没有从NIVO下载后进行编辑。

Answer 1:

我曾在我的CentOS 6.3系统源类似的问题在安装的NodeJS。 它安装成功,但我一直在我的编译程序ROR资产失败,直到我明确设置的路径,它被安装(的NodeJS)

[根]#使安装
...
安装/usr/local/lib/node_modules/npm/html/doc/folders.html
符号链接../lib/node_modules/npm/bin/npm-cli.js - >在/ usr / local / bin目录/ NPM
的/ usr / local / bin中/ NPM到/ usr / local / bin中/节点的更新认领

[根]#出口PATH =在/ usr / local / bin目录:$ PATH

现在,它的工作原理。 希望帮助!



Answer 2:

所以,我的Ruby 2.0.0安装和使用的Apache2与乘客在CentOS 5.10的Rails 4.0.2。 我的第一步,我想是开放的轨道控制台,然后输入以下命令:

ExecJS.runtime

它返回以下值:

#<ExecJS :: ExternalRuntime:0x99ab380 @名称= “Node.js的(V8)”,@command = [ “的NodeJS”, “节点”],@ runner_path =“/家/富/供应商/束/红宝石/ 2.0。 0 /宝石/ execjs-2.1.0 /lib/execjs/support/node_runner.js”,@编码= “UTF-8”,@弃用=假,@二进制= “节点”>

这意味着节点确实安装和检测,但由于某些原因,它不能正常工作。

所以,我想在网站上的例子:

ExecJS.eval("'red yellow blue'.split(' ')")

我得到了正确的响应。 所以,现在我很奇怪,为什么乘客不捡不起来。

然后,我注意到,乘客显示路径变量,它看起来像:

/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 /斌:/家庭/富/箱

但是,这似乎缺少了usr/local/bin 。 我在Linux方面的专家,所以对我来说,解决这个问题最简单的方法是用一个符号链接。 所以,我执行ln -s /usr/local/bin/node /usr/bin/node 。 您可能要注意的是我找到的路径使用命令我的NodeJS find / -name node

然后我刷新我的Web应用程序和你不知道它的工作。 所以,如果它的工作对我来说,我希望它可以帮助别人了。

UPDATE(可能是更好的方式):这可能是一个更好的方式来做到这一点。 我们可以从源代码编译它像这样:

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将被安装在乘客期望它的路径。



Answer 3:

我不知道这是否会帮助,但检查你的$ PATH节点就在那里。 另外,如果你想使用节点,你应该使用RVM。 检查您的节点安装是否正确完成。



文章来源: Node.js not found by Rails / execjs