Ruby on rails ExecJS::Say#hello中的RuntimeError
对该做什么感到困惑。默认rails由RailsInstaller安装 启动了一个新的演示应用程序。使用rails 3.2.14 创建了一个控制器Ruby on rails ExecJS::Say#hello中的RuntimeError,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,对该做什么感到困惑。默认rails由RailsInstaller安装 启动了一个新的演示应用程序。使用rails 3.2.14 创建了一个控制器 rails generate controller Say hello goodbye 但是,每当我导航到localhost时,它都会返回一个execjs错误 所以 http://localhost:3000/say/hello 我收到 ExecJS::RuntimeError in Say#hello Showing c:/work/demo
rails generate controller Say hello goodbye
但是,每当我导航到localhost时,它都会返回一个execjs错误
所以
http://localhost:3000/say/hello
我收到
ExecJS::RuntimeError in Say#hello
Showing c:/work/demo/app/views/layouts/application.html.erb where line #6 raised:
(in c:/work/demo/app/assets/javascripts/say.js.coffee)
Extracted source (around line #6):
3: <head>
4: <title>Demo</title>
5: <%= stylesheet_link_tag "application", :media => "all" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
9: <body>
Rails.root: c:/work/demo
我该怎么办
编辑
gemfile.lock查找ExecJS的
运行时.rb
文件
bundle show execjs
备份。打开运行时.rb
并编辑。在包含“cscript//E:JScript//Nologo//U”的行中查找以行JScript=ExternalRuntime.new(
)开头的部分,-仅删除//U
。现在在包含的行中:encoding=>'UTF-16LE'#CScript with//U返回UTF-16LE
-changeUTF-16LE
到UTF-8
。保存更改。结果如下:
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-8' # CScript with //U returns UTF-16LE
)
重新启动rails s,问题应该得到解决。确保您在资产组下有
gem'therubyracer'
和gem'execjs'
,然后运行bundle install
,您也可以尝试代替execjs在R&D I安装node.js()问题解决了。添加gem'execjs'为我做到了。使用gem安装节点。
我不知道为什么这样做有效,但它有效。@rmagnum2002添加到PasteBin请阅读他的问题:
我将下面的文件添加到我的Gem文件中,并进行了捆绑更新。
我做了,但可能它们不在资产块内!,这发生在我身上。是的,你是对的,很难说这些宝石放在哪里。
JScript = ExternalRuntime.new(
:name => "JScript",
:command => "cscript //E:jscript //Nologo",
:runner_path => ExecJS.root + "/support/jscript_runner.js",
:encoding => 'UTF-8' # CScript with //U returns UTF-16LE
)