- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 Node.js 作为我的 Rails 应用程序的 JavaScript 运行时。我在 Ubuntu 12.0.4 上使用 Phusion Passenger 模块和 Nginx 作为我的 Web 服务器。每次我访问我的 Rails 应用程序时,我都会收到一个错误页面,该页面似乎是从 Passenger 生成的,指出 ExecJS 找不到 JavaScript 运行时。我在这里看到很多帖子,要么建议你安装 Node——我通过 sudo apt-get install node
完成——要么建议在你的 Gemfile 中使用 therubyracer + execjs。后一种解决方案确实有效,但我更喜欢使用 Node,尤其是 Heroku has stated他们不鼓励使用 therubyracer 是因为它使用“非常大量的内存”。
我遇到了 tutorial这表明我的 Web 服务器运行的用户可能在其路径中没有 Node。我通过运行 sudo -u www-data which node
进行了检查,它返回 /usr/bin/node
。用户 www-data 是运行 nginx 的用户,也是拥有我的 Rails 应用程序中所有文件的用户。我还查看了 /etc/environment
,我可以看到 /usr/bin
在系统范围的路径中。运行 sudo -u www-data node -v
也会按预期返回 Node 版本,因此它是可执行的。
当我运行 RAILS_ENV=production bundle exec rake assets:precompile
时,我没有收到任何错误。当我将 ExecJS 加载到与 IRB 的交互式 session 中时,我能够让它返回一个有效的运行时。我也尝试过明确添加 EXECJS_RUNTIME=Node
作为环境变量,但它只是说“Node.js(V8)运行时不可用”。我已经尝试了很多东西,但我无法让它工作!
这是我在访问我的 Rails 应用程序时遇到的错误。当我查看 Nginx 日志文件时,我看到的内容几乎相同。
Web application could not be started
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
/usr/lib/ruby/gems/2.1.0/gems/execjs-2.0.2/lib/execjs/runtimes.rb:51:in `autodetect'
/usr/lib/ruby/gems/2.1.0/gems/execjs-2.0.2/lib/execjs.rb:5:in `<module:ExecJS>'
/usr/lib/ruby/gems/2.1.0/gems/execjs-2.0.2/lib/execjs.rb:4:in `<top (required)>'
/usr/lib/ruby/gems/2.1.0/gems/uglifier-2.5.0/lib/uglifier.rb:3:in `require'
/usr/lib/ruby/gems/2.1.0/gems/uglifier-2.5.0/lib/uglifier.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `require'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `each'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:72:in `block in require'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `each'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler/runtime.rb:61:in `require'
/usr/lib/ruby/gems/2.1.0/gems/bundler-1.6.1/lib/bundler.rb:132:in `require'
/srv/www/app/config/application.rb:7:in `<top (required)>'
/srv/www/app/config/environment.rb:2:in `require'
/srv/www/app/config/environment.rb:2:in `<top (required)>'
config.ru:3:in `require'
config.ru:3:in `block in <main>'
/usr/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
/usr/lib/ruby/gems/2.1.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:112:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'
最佳答案
我也有这个问题。这就是为我解决的问题。我将此添加到我的 nginx.conf 的顶部
env PATH;
http://wiki.nginx.org/CoreModule#env
当我专注于这个解决方案时,我还发现这篇文章帮助我开始找到正确的树:https://forums.freebsd.org/viewtopic.php?&t=35539 -- 他编辑了 execjs 代码以给出 Node 的绝对路径。这很有效,并帮助我了解了如何为乘客提供路径。
关于ruby-on-rails - Rails/Passenger/Node.js : ExecJS "Could not find a JavaScript runtime",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23124776/
我在生产服务器上预编译时遇到错误;但是,如果我将环境设置为生产并在开发计算机上运行预编译,则运行正常。这怎么可能? RAILS_ENV="production" bundle exec rake as
我是 ruby 和 rails 的新手,并且在教程中行走(爬行?)。第二个项目使用脚手架创建一个由姓名和电子邮件地址组成的用户。当我尝试查看用户屏幕时,我得到以下信息: ExecJS::Runti
我收到此错误: rake aborted! Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs
自从 Dreamhost 几周前升级了他们的服务器后,我的网站就出现了故障。我一直在竭尽全力试图修复它并取得了一些进展,但我仍然停留在希望是最后一期的问题上。 我在 Ruby 1.8.7 上使用 Ra
我已经在 ubuntu 12.04 服务器上安装了 nodejs,我想知道为什么我在编译 Assets 时遇到问题,当我转到控制台 rails c 我运行这个 ExecJS::Runtimes.bes
我正在使用 Ruby,但在删除 gem 时遇到问题。 gem 是execjs。这是一些背景信息。 rvm use @global rvm gem list Outputs... *** LOCAL G
我需要在我的 Rails 4 应用程序中执行一个 javascript 函数。我用 ExecJS ( https://github.com/sstephenson/execjs ) 尝试了以下但没有成
你好,我在 Demo#index 中遇到 ExecJS::RuntimeError 下面是突出显示的第 6 行,下面是我的完整轨迹。有人可以 A: 给我指出正确的方向来调试这个以及调试 rails 的
我的项目运行良好,我正在调整使用 Chartkick 制作的图表并使用 ActionCable 更新 HTML 徽章,突然出现此错误: Pages#create_session 中的 ExecJS::
这让我一整天都快要死了。我有一个 Rails 应用程序,我正在从 3.2 升级到 4.0.13,它在开发中运行良好。在 Rails 4 的测试中,我得到 ExecJS::ProgramError: R
我正在尝试部署到 Heroku,但遇到了此错误。我做了一些研究,并在查看相关帖子后尝试卸载并重新安装一些 gem,但我不太确定这里出了什么问题,因为我不熟悉实际问题是什么。请帮忙!我应该怎么办?到目前
我正在学习 CareerFoundry 的 Web 开发类(class),但遇到了收到“预编译资源失败”消息的问题。这是尝试将我的文件上传到 heroku 时出现的原始错误消息 ExecJS:
错误页面: 这是 application.html.erb 文件: YoutupediaBlog true %> true %> 这两天我一直在寻找这个问题的解决
我遇到的问题: 这是我的 room.coffee 文件,一切正常。 jQuery(document).on 'turbolinks:load', -> messages = $('#message
我有一个 RoR (4.1) 应用程序,我正在尝试使用 Passenger & Nginx 运行它。我想在我的 CI 服务器 (jenkins) 上进行 bundle ,但是当我复制文件时,我遇到了可
我在 RHEL 6 机器上安装了一个 Rails 4 应用程序。 产品使用 Passenger 和 Apache2。 最近我一直在尝试使用 Whenever Gem 和 Cron 将 Rake 任务作
rake assets:precompile 为我的 rails 项目抛出以下错误: rake aborted! Current ExecJS runtime does't support ES6.
在我现有的项目中我改变了 gem "twitter-bootstrap-rails" 到 gem 'bootstrap', '~> 4.1.3' 在我的 Gemfile 中。我现在得到 uniniti
如果我有一个 javascript 对象,我通常会像这样与该对象及其方法进行交互: var obj = someObject.getInstance(); var result = obj.someM
在我们的rails rfq.js.coffee中,只有一段简单的js代码: $(function() { $('#need_report').change(function(){ if (
我是一名优秀的程序员,十分优秀!