在cygwin上运行Getting Rails博客的ExecJS :: RuntimeError(windows7)

时间:2013-09-03 19:10:36

标签: ruby-on-rails

我正在尝试在cygwin(windows7)上运行Rails入门博客。我收到以下错误消息:

Welcome#index

中的ExecJS :: RuntimeError
module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\tmp\execjs20130903-50672-1vn7gqc.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

  (in /usr/lib/ruby/gems/1.9.1/gems/turbolinks-1.3.0/lib/assets/javascripts   /turbolinks.js.coffee)

节点已安装。

这是在

之后
$rails generate controller welcome index
$rails s

我在cygwin上运行Rails 4.0 有什么想法可能会发生这种情况吗?

由于

umbregachoong

2 个答案:

答案 0 :(得分:2)

我遇到了这个错误,它与临时文件的路径错误有关。我可以通过更改\gems\[ruby version]\gems\execjs-2.0.2\lib\execjs中的以下两个文件来修复它。 (可能在\usr\lib\ruby\中找到,但这取决于你的Ruby安装方式。我使用的是RVM,所以我的不同。)

external_runtime.rb

compile_to_tempfile(source) do |file|
     extract_result(@runtime.send(:exec_runtime, file.path))
  end
end

应该改为

compile_to_tempfile(source) do |file|
    filepath = file.path
    if ExecJS.cygwin? && @runtime.name == "JScript"
      IO.popen("cygpath -m " + file.path) { |f| filepath = f.read }
      filepath = filepath.gsub("\n","")
    end
    extract_result(@runtime.send(:exec_runtime, filepath))
  end
end

module.rb

在最后两个end之前添加此权限。

def cygwin?
  @cygwin ||= RbConfig::CONFIG["host_os"] =~ /cygwin/
end

重新启动Rails服务器后,运气好的话。

来源:https://github.com/sstephenson/execjs/issues/78

答案 1 :(得分:0)

不要做任何事情只需转到application / assets / javascript / application.js并删除

  

' //'

来自

  

// =需要turbolinks

  

=需要turbolinks

基本上会从文件中取消注释该行 当我在Default rails服务器中遇到RAILS Tutorial中的类似错误时,这一步完成了我的工作。我使用的是Windows 10 PC,这解决了我的问题