我刚刚通过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]
答案 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服务器!