【问题标题】:Rails first app error -- Errno::ENOENTRails 第一个应用程序错误——Errno::ENOENT
【发布时间】:2015-04-02 18:53:19
【问题描述】:

我刚刚通过 rails 安装程序在我的 Windows PC 上安装了 rails —— 我对 rails 或任何东西都不太了解...在我创建了我的第一个应用程序 (rails new XXX) 并创建了第一个控制器之后然后查看,我运行了服务器,我看到的第一件事是一个错误:

Errno::ENOENT

    Showing C:/Sites/XXX/XXX/app/views/layouts/application.html.erb where line #5 raised:

    No such file or directory @ unlink_internal - C:/Users/XXX/AppData/Local/Temp/execjs20150402-8140-cy5cjejson
      (in C:/Sites/XXX/XXX/app/assets/stylesheets/application.css.sass)

再一次,我从来没有接触过我的轨道,也没有写过任何代码,但仍然出现这个错误......我在网上搜索了几个小时以寻找答案,但没有一个能帮助我或解决我的问题......我尝试安装 Node.js、exejs,但没有任何帮助。

注意: 我注意到如果我删除

<%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>

在应用模板中,网站正常运行(但我不想删除它——我需要它)

我该如何解决这个问题?

编辑:我的 gem 文件:

source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'

  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

【问题讨论】:

    标签: javascript css ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    选项:

    1) Removing //= require_tree . /忽略问题 - 正如 ColinR 上面所说,此行不应该在第一名。 ExecJS 与您系统上的 JavaScript 运行时正常工作存在实际问题,删除此行只是忽略了这一事实。

    2) 安装 Node.js / 逃跑 - 许多人似乎只是最终安装 Node.js 并使用它而不是他们系统上已有的 JavaScript 运行时.虽然这是一个有效的选项,但它还需要额外的软件,并且只能避免最初的问题,即 ExecJS 无法与系统上已有的 JavaScript 运行时一起正常工作。如果您系统上现有的 JavaScript 运行时应该工作,为什么不让它工作而不是安装更多软件呢?根据 ExecJS 创建者的说法,实际上已经支持 Windows 中内置的运行时...

    ExecJS 允许您从 Ruby 运行 JavaScript 代码。它会自动选择 可用于评估 JavaScript 程序的最佳运行时,然后 将结果作为 Ruby 对象返回给您。

    ExecJS 支持这些运行时:

    therubyracer - 嵌入在 Ruby therubyrhino 中的 Google V8 - Mozilla 嵌入在 JRuby Node.js Apple JavaScriptCore 中的 Rhino - 包含 使用 Mac OS X Microsoft Windows 脚本宿主 (JScript)(来自 github.com/sstephenson/execjs#execjs)

    3) 实际解决问题/学习 - 使用选项 1 和 2 的知识来寻找其他解决方案。在实际找到有关我们遇到的根本问题的信息之前,我无法告诉您在看到选项 1 或 2 时关闭了多少网页是公认的解决方案。我们一直在寻找的唯一原因是我们无法相信 Rails 团队会 (1) 在每个脚手架生成的导致问题的项目中插入一行代码,或者 (2) 要求我们安装额外的软件来运行该默认值行代码。因此,我们最终解决了我们的根本问题(您的里程可能会有所不同)。

    对我们有用的修复:在有问题的系统上,找到 ExecJS 的 runtimes.rb 文件。它看起来像this。复制找到的文件以进行备份。打开原始 runtimes.rb 进行编辑。找到以 JScript = ExternalRuntime.new( 行开头的部分。在该部分中,在包含 :command =&gt; "cscript //E:jscript //Nologo //U", 的行上 - 仅删除 //U 。然后在包含 :encoding =&gt; 'UTF-16LE' # CScript with //U returns UTF-16LE - change UTF-16LEUTF-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 服务器并在浏览器中刷新产生原始错误的页面。希望页面现在加载没有错误。这是我们最初发布结果的 ExecJS 问题线程:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

    如果这不能解决问题,您可以随时使用您(希望)制作的备份副本覆盖修改后的 runtimes.rb,一切都会恢复原状。在这种情况下,请考虑选项 3 并继续搜索。让我们知道最终对您有用的东西.. 除非它删除了 require_tree 或安装 node.js,否则已经有很多这样的事情发生了。 :)

    【讨论】:

    • 抱歉,我已经尝试了 3 号,尝试安装 node.js ——没有帮助,我遇到的问题与您要解决的问题不同:(
    【解决方案2】:

    将 sass-rails 版本更改为 4.0.3,其余部分保持不变。必要时删除 Gemfile.lock,然后:

    bundle update
    bundle install
    

    最后,别忘了重启你的 Rails 服务器!

    【讨论】:

    • 不是它向我显示此错误:Showing C:/Sites/temp/app/views/layouts/application.html.erb where line #6 raised: No such file or directory @ unlink_internal - C:/Users/XXX/AppData/Local/Temp/execjs20150402-7900-l8y4j5json (in C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)
    • 添加它(在您建议的更改之前)
    猜你喜欢
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    相关资源
    最近更新 更多