Javascript 由于ExecJS,在生产服务器上运行Rake任务失败
我在RHEL 6机器上安装了Rails 4应用程序 该产品使用Passenger和Apache2 最近,我一直在尝试使用Gem和Cron将Rake任务作为计划作业集成到生产中 每当我尝试在生产环境中运行这些Rake任务中的一项时,就会出现以下错误:Javascript 由于ExecJS,在生产服务器上运行Rake任务失败,javascript,ruby-on-rails,node.js,ruby-on-rails-4,rake,Javascript,Ruby On Rails,Node.js,Ruby On Rails 4,Rake,我在RHEL 6机器上安装了Rails 4应用程序 该产品使用Passenger和Apache2 最近,我一直在尝试使用Gem和Cron将Rake任务作为计划作业集成到生产中 每当我尝试在生产环境中运行这些Rake任务中的一项时,就会出现以下错误: rake aborted! ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for
rake aborted!
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
值得一提的是,机器上安装了NodeJS。我可以预编译资产,等等。
具体来说,命令节点--version
生成:v0.10.31
这是我的堆栈跟踪:
rake aborted!
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs/runtimes.rb:51:in `autodetect'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs.rb:5:in `<module:ExecJS>'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs.rb:4:in `<top (required)>'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `require'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `block in require'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:214:in `load_dependency'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `require'
/var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/uglifier-2.5.3/lib/uglifier.rb:3:in `<top (required)>'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:76:in `require'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:72:in `each'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:72:in `block in require'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:61:in `each'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:61:in `require'
/home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler.rb:133:in `require'
/var/www/eng_performance/releases/20141014084554/config/application.rb:7:in `<top (required)>'
/var/www/eng_performance/releases/20141014084554/Rakefile:4:in `require'
/var/www/eng_performance/releases/20141014084554/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)
嗯,最后,我终于解决了这个问题:) 事实证明,node.js的安装并没有什么问题,只是引用了node.js 我不知道最初为什么会更改,但解决了问题-即通过添加符号链接
ln-s/usr/local/bin/node/usr/bin/node
注意:我很确定符号链接不是最佳实践。如果有人能提出另一个想法,我很乐意听
希望这是我在node.js中遇到的最后一个错误。
如果出现类似这样的其他错误,Rubyracer将提供出色的备份解决方案 你能检查一下你的gem文件中是否没有注释
gem'therubyracer'
?@RMilushev,谢谢你的回复。据我所知,对于性能问题,不建议使用therubyracer。我发现了不止一个这样的线程:。你知道这些问题吗?这个gem的一些新版本有什么变化吗?我在生产Debian Linux服务器上使用nodejs的经验不好。它必须以一种非常特殊的方式安装,我们决定依靠therubyracer
gem。我不认为有性能问题,因为它是一个V8 js机器整经机,没有多少。
Packages skipped because of dependency problems:
c-ares19-1.9.1-5.el6.3.x86_64 from epel
http-parser-2.0-4.20121128gitcd01361.el6.x86_64 from epel
1:libuv-0.10.28-1.el6.x86_64 from epel
nodejs-0.10.30-1.el6.x86_64 from epel
1:v8-3.14.5.10-11.el6.x86_64 from epel