Rails第一个应用程序错误 - Errno :: ENOENT

时间:2015-04-02 18:53:19

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

我刚刚通过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" %>

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

我该如何解决这个问题?

编辑:我的宝石文件:

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]

2 个答案:

答案 0 :(得分:1)

选项:

1) 正在删除 //= 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   Rhino嵌入在JRuby Node.js Apple JavaScriptCore中 - 包含在内   使用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 => "cscript //E:jscript //Nologo //U",的行上 - 仅删除//U。然后在包含:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE - change UTF-16LE到{的行上{1}}。将更改保存到文件中。现在该文件的这一部分应为:

UTF-8

接下来,停止然后重新启动Rails服务器并在浏览器中刷新产生原始错误的页面。希望页面现在加载没有错误。这是我们最初发布结果的ExecJS问题主题:https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

如果这不能解决问题,您可以随时使用您希望制作的备份副本覆盖已修改的runtimes.rb,并且所有内容都将回到原点。在这种情况下,请考虑选项3并继续搜索。让我们知道什么最终对你有用..除非它删除require_tree或安装node.js,已经有很多这样的事情。 :)

答案 1 :(得分:0)

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

bundle update
bundle install

最后,不要忘记重新启动rails服务器!