我正在尝试在CentOS 5上运行Rails应用程序并继续收到此错误:
找不到JavaScript运行时.有关可用运行时的列表,请参阅https://github.com/sstephenson/execjs.(ExecJS :: RuntimeUnavailable)
我安装了NodeJS(v0.8.15)和therubyracer(libv8).
这是我的gem list:
*** LOCAL GEMS ***
actionmailer (3.2.9, 3.2.8)
actionpack (3.2.9, 3.2.8)
activemodel (3.2.9, 3.2.8)
activerecord (3.2.9, 3.2.8)
activerecord-sqlserver-adapter (3.2.10)
activeresource (3.2.9, 3.2.8)
activesupport (3.2.9, 3.2.8)
arel (3.0.2)
builder (3.1.4, 3.0.4)
bundler (1.2.3, 1.2.2)
capistrano (2.13.5)
commonjs (0.2.6)
daemon_controller (1.1.0)
diff-lcs (1.1.3)
erubis (2.7.0)
execjs (1.4.0)
factory_girl (4.1.0)
factory_girl_rails (4.1.0)
fastthread (1.0.7)
haml (3.1.7)
haml-rails (0.3.5)
highline (1.6.15)
hike (1.2.1)
i18n (0.6.1)
journey (1.0.4)
jquery-rails (2.1.4, 2.1.3)
json …Run Code Online (Sandbox Code Playgroud) 我的应用在本地环境中运行良好.我正在尝试git push构建heroku.我的命令是:
bundle install
git add .
git commit -am "abcdef"
git push heroku master
Run Code Online (Sandbox Code Playgroud)
然后我遇到了资产问题:预编译
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: I, [2016-01-04T08:32:35.471098 #1018] INFO -- : Writing /tmp/build_5d68c6d2f7845ca719a5f77705a12798/public/assets/recruiters-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js
remote: I, [2016-01-04T08:32:35.471825 #1018] INFO -- : Writing /tmp/build_5d68c6d2f7845ca719a5f77705a12798/public/assets/recruiters-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js.gz
remote: I, [2016-01-04T08:32:35.477826 #1018] INFO -- : Writing /tmp/build_5d68c6d2f7845ca719a5f77705a12798/public/assets/recruiters-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css
remote: I, [2016-01-04T08:32:35.477974 #1018] INFO -- : Writing /tmp/build_5d68c6d2f7845ca719a5f77705a12798/public/assets/recruiters-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css.gz
remote: I, [2016-01-04T08:32:35.575303 #1018] INFO -- : Writing /tmp/build_5d68c6d2f7845ca719a5f77705a12798/public/assets/events-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.js
remote: I, [2016-01-04T08:32:35.575465 #1018] INFO …Run Code Online (Sandbox Code Playgroud) 如何更换therubyracer宝石?我真的被困住了。
我们一直therubyracer在 Rails 资产管道中使用 gem。然而,它使用的依赖项已经过期并且存在安全漏洞。最新版本0.12.3为 2017 年 1 月 5 日起。
我看过mini_racergem,但我们部署到 FreeBSD,FreeBSD 支持的最新版本是0.1.142017 年 8 月 24 日开始的。我们在 macOS 上开发,我对此版本的编译mini_racer出现错误,其中一个错误是因为CreateDefaultPlatform已从 V8 中删除。
execjs 支持的运行时列表,位于https://github.com/rails/execjs列出Node.js,Google V8但链接到的页面看起来不像是我可以在 Gemfile 中替换的 gem,这些页面也没有关于如何替换的文档将它们的运行时用于 execjs。老实说,我不知道如何在我的 Rails 管道中使用更新的运行时。
我正在使用NVM来管理系统上的Node.js版本,自从我安装它以后,我的rails应用就停止工作了.
ExecJS似乎找不到节点运行时,给出错误:
Run Code Online (Sandbox Code Playgroud)Node.js (V8) runtime is not available on this system (ExecJS::RuntimeUnavailable)
需要采取什么行动才能使NVM与ExecJS发挥良好的作用?
例如,我有以下代码:
function f(p) {
for(var i=0;i<1;i++)
{
p=unescape(p);
}
return p;
}
var c='something';
Run Code Online (Sandbox Code Playgroud)
当我在firebug控制台中通过它时,它返回undefined.那现在好了
当我尝试使用ExecJS运行它时.ExecJS返回:ExecJS :: RuntimeError:SyntaxError:意外的令牌变量
我无法知道从哪里开始搜索问题.有没有人有想法?
我通过从root用户编译和安装来安装node.js. 我想这可能是挂断的地方.从运行rails应用程序的用户我检查了node.js.
$ which node
/usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)
当我启动我的rails应用程序(Rails 3.2.9)时,我得到普遍无益的"我们很抱歉,但出了点问题." 检查生产错误日志我发现找不到Javascript运行时.这显然是安装的,这令人困惑.所以我开始强制使用Node javascript运行时.我编辑了config/boot.rb以包含:
ENV['EXECJS_RUNTIME'] = 'Node'
Run Code Online (Sandbox Code Playgroud)
我在查看生产日志时再次检查了我的应用程序.这次我收到了错误
ActionView::Template::Error (Node.js (V8) runtime is not available on this system
Run Code Online (Sandbox Code Playgroud)
仍然困惑.我去了execjs gem并将runtime命令更改为确切的安装路径.
Node = ExternalRuntime.new(
:name => "Node.js (V8)",
:command => "/usr/local/bin/node",
:runner_path => ExecJS.root + "/support/node_runner.js",
:encoding => 'UTF-8'
)
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误.节点已安装并可由用户访问,但gem/rails似乎无法使用它.服务器运行CentOS 6.3.导致错误被抛出的特定javascript文件是jquery.nivo.slider.pack.js.从nivo下载后我没有编辑.
目前,我正在尝试Hash从 JS 中获取某种Ruby 格式的内容。
我有一个看起来像这样的 JS 模块
module.exports = {
key1: "val",
key2: {
key3: "val3"
}
...
}
Run Code Online (Sandbox Code Playgroud)
这只是作为一个字符串提供给我的。我知道 ExecJS 在这里可能会有所帮助,但我不确定将其转换为哈希的最佳方法是什么。
我目前正在尝试做这样的事情
contents.prepend("var module = {exports: {}};\n")
context = ExecJS.compile contents
context.eval('module.exports').to_hash
Run Code Online (Sandbox Code Playgroud)
但是当给它一个像上面这样的字符串时,我收到了来自 JSON gem 的解析错误。
我无法推进Heroku.当我试图得到一个ExecJS :: ProgramError:某种或那种.我有多个人检查我的代码,似乎没有人能够弄明白.看来我可能有一些错误的东西.
当我执行git push heroku master时,我尝试预编译资产时得到以下内容:
Running: rake assets:precompile
rake aborted!
ExecJS::ProgramError: Unexpected character '#' (line: 16164, col: 0, pos: 471385)
Error
at new JS_Parse_Error (/tmp/execjs20140502-719-9ngq7y.js:2357:10754)
at js_error (/tmp/execjs20140502-719-9ngq7y.js:2357:10973)
at parse_error (/tmp/execjs20140502-719-9ngq7y.js:2357:12691)
at Object.next_token [as input] (/tmp/execjs20140502-719-9ngq7y.js:2357:17713)
at next (/tmp/execjs20140502-719-9ngq7y.js:2357:19012)
at semicolon (/tmp/execjs20140502-719-9ngq7y.js:2357:19857)
at simple_statement (/tmp/execjs20140502-719-9ngq7y.js:2357:22669)
at /tmp/execjs20140502-719-9ngq7y.js:2357:20820
at /tmp/execjs20140502-719-9ngq7y.js:2357:20069
at /tmp/execjs20140502-719-9ngq7y.js:2358:40
(in /tmp/build_e82cf52d-86e5-45ea-83e9-
9841d4de5c60/app/assets/javascripts/application.js)/tmp/build_e82cf52d-86e5-45ea-
83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/execjs-
2.0.2/lib/execjs/external_runtime.rb:68:in `extract_result'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/execjs-2.0.2/lib/execjs/external_runtime.rb:28:in `block in exec'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/execjs-2.0.2/lib/execjs/external_runtime.rb:41:in `compile_to_tempfile'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/execjs-2.0.2/lib/execjs/external_runtime.rb:27:in `exec'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/uglifier-2.5.0/lib/uglifier.rb:186:in `really_compile'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/uglifier-2.5.0/lib/uglifier.rb:110:in `compile'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/sprockets-2.11.0/lib/sprockets/uglifier_compressor.rb:25:in `evaluate'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/tmp/build_e82cf52d-86e5-45ea-83e9-9841d4de5c60/vendor/bundle/ruby/2.0.0/gems/sprockets-2.11.0/lib/sprockets/context.rb:197:in …Run Code Online (Sandbox Code Playgroud) 这一整天都在扼杀我.我有一个Rails应用程序,我正在从3.2升级到4.0.13,在开发中工作正常.在Rails 4的测试中,我得到了
ExecJS::ProgramError: ReferenceError: CoffeScript is not defined
在一系列的集成测试中.我没有在任何地方明确地调用或使用ExecJS,它似乎被调用coffee-script,反过来被调用coffee-rails.
我甚至不知道有什么有用的东西可以帮助你.如果我手动将我的所有coffeescript编译为javascript,这甚至会发生,所以我不认为这是我的咖啡才能实现这一点.
请随时询问东西,我会把它给你.
宝石的版本可能会触及这个:
rails 4.0.13 capybara 2.7.1 capybara-webkit 1.11.1 coffee-rails 4.2.1 coffee-script 2.4.1 execjs 2.7.0
我有一些代码使用模板字符串在开发中工作,但推送到Heroku失败了这个错误:
ExecJS::RuntimeError: SyntaxError: Unexpected character '`'
Run Code Online (Sandbox Code Playgroud)
跑步bundle exec rake assets:precompile RAILS_ENV=production显示同样的事情.
代码是这样的:
`1 + 1 is ${1 + 1}`
Run Code Online (Sandbox Code Playgroud)
我想知道Heroku Node版本是否太低而无法支持.我根本没有定制这个.只需使用默认配置推送Rails 4应用程序.