ExecJS :: RuntimeError บน Windows ที่พยายามทำตาม rubytutorial


103

UPDATE: คำแนะนำของColinในการลบบรรทัด // = require_tree ได้แก้ไขปัญหาแล้ว

ฉันเสียเวลาไปกว่า 2 วันในการพยายามทำตามทุกข้อเสนอแนะและแก้ไขปัญหาของฉัน ฉันพยายามติดตามหนังสือhttp://ruby.railstutorial.orgบนเครื่อง windows และไม่สามารถผ่านข้อผิดพลาดที่น่ารังเกียจต่อไปนี้ไปได้ตลอดชีวิต

ExecJS::RuntimeError in Static_pages#home

Showing C:/Users/.../bootcamp-sample-app/app/views/layouts/application.html.erb where line #6 raised:

["ok","(function() {\n\n\n\n}).call(this);\n"]
(in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)
Extracted source (around line #6):

3: <head>
4:   <title><%= full_title(yield(:title)) %></title>
5:   <%= stylesheet_link_tag    "application", media: "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8:   <%= render 'layouts/shim' %>
9: </head>
Rails.root: C:/Users/.../bootcamp-sample-app

Application Trace | Framework Trace | Full Trace
app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'
Request

ฉันได้ลองทุกคำแนะนำรวมถึงการติดตั้ง nodejs ด้วย msi โดยใช้ execjs 1.3.0 และสิ่งอื่น ๆ ที่ฉันจำไม่ได้อีกแล้ว นี่คือไฟล์ gem

source 'https://rubygems.org'

gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'

group :development, :test do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.10.0'
  gem 'guard-rspec', '0.5.5'
  gem 'guard-cucumber'
end

group :development do
  gem 'annotate', '2.5.0'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'coffee-script'
  gem 'uglifier'
end

gem 'jquery-rails', '2.0.2'

gem 'execjs'

# Gems on Linus/Mac
#gem 'therubyracer'


group :test do
  gem 'capybara', '1.1.2'
  gem 'guard-spork', '0.3.2'
  gem 'spork', '0.9.0'
  gem 'factory_girl_rails', '1.4.0'
  gem 'cucumber-rails', '1.2.1', require: false
  gem 'database_cleaner', '0.7.0'


# Test gems on Linux
#  gem 'rb-inotify', '0.8.8'
#  gem 'libnotify', '0.5.9'

# Test gems on Macintosh OS X
#  gem 'selenium-webdriver', '~> 2.22.0'
#  gem 'rb-fsevent', '0.9.1', :require => false
#  gem 'growl', '1.0.3'

# Test gems on Windows
# gem 'rb-fchange', '0.0.5'
# gem 'rb-notifu', '0.0.4'
# gem 'win32console', '1.3.0'
end

group :production do
#  gem 'therubyracer'
  gem 'pg', '0.12.2'
end

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

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

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
#gem 'debugger''

และนี่คือเซสชัน js.coffee

# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/

application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require bootstrap

application.html.erb

<!DOCTYPE html>
 <html>
 <head>
   <title><%= full_title(yield(:title)) %></title>
   <%= stylesheet_link_tag    "application", media: "all" %>
   <%= javascript_include_tag "application" %>
   <%= csrf_meta_tags %>
   <%= render 'layouts/shim' %>
 </head>
 <body>
 <%= render 'layouts/header' %>
 <div class="container">
   <%= yield %>
   <%= render 'layouts/footer' %>
 </div>
 </body>
 </html>

นี่คือเนื้อหาคอนโซล

Processing by StaticPagesController#home as HTML
  Rendered static_pages/home.html.erb within layouts/application (45.0ms)
Completed 500 Internal Server Error in 1136ms

ActionView::Template::Error (["ok","(function() {\n\n\n\n}).call(this);\n"]
  (in C:/Users/.../bootcamp-sample-app/app/assets/javascripts/sessions.js.coffee)):
    3: <head>
    4:   <title><%= full_title(yield(:title)) %></title>
    5:   <%= stylesheet_link_tag    "application", media: "all" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8:   <%= render 'layouts/shim' %>
    9: </head>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb___487732698_30422172'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/template_error.erb within rescues/layout (34.0ms)

ฉันได้ติดตั้ง Devkit และลองใช้อัญมณีต่างๆแล้ว แต่โปรดแนะนำการเปลี่ยนแปลงที่สามารถช่วยฉันพัฒนาบน windows ได้ ฉันใช้ทับทิมติดตั้งทุกอย่าง

ฉันขาดอะไรไป?


5
คุณช่วยลองลบบรรทัด//= require_tree .ออกapplication.jsและดูว่ายังมีข้อผิดพลาดอยู่หรือไม่
Colin R

ว้าว .... ที่ได้เคล็ดลับ ... ขอบคุณมากที่โคลินลบบรรทัดออก // = require_tree ได้แก้ไขปัญหาแล้ว ฉันอธิบายไม่ได้ว่ามันคืออะไร แต่ช่วยอธิบายได้ไหมว่าทำไมเส้นนั้นถึงทำให้เกิดข้อผิดพลาด
user1687078

3
บรรทัดนั้นกำลังรวบรวมทุก.js.coffeeไฟล์ในapp/assets/javascriptsJavaScript จากนั้นเพิ่มลงในเลย์เอาต์ของคุณ (แต่ในโหมดการพัฒนาเท่านั้นในโหมดการผลิต js ที่คอมไพล์แล้วจะถูกเพิ่มลงในapplication.jsไฟล์ของคุณ) มีrequire_tree .ไม่ควรที่จะก่อให้เกิดข้อผิดพลาดดังนั้นอย่างใดที่คุณมีปัญหากับไฟล์ที่ถูกรวม คุณสามารถโพสต์รายชื่อไฟล์ทั้งหมดในapp/assets/javascriptsไดเร็กทอรีของคุณได้หรือไม่? นอกจากนี้คุณสามารถลองลบเนื้อหาทั้งหมดsessions.js.coffeeและเพิ่มกลับ//= require_tree .และดูว่ายังมีข้อผิดพลาดอยู่หรือไม่
Colin R

1
@ColinR คุณควรเพิ่มสิ่งนี้เป็นคำตอบสำหรับคำถาม ฉันมีปัญหาเดียวกันและหากฉันไม่ได้เรียกดูความคิดเห็นฉันก็คงค้นหาคำถามอื่นต่อไป
Emmanuel F

คำตอบ:


242

เพื่อนของฉันพยายามสอน Rails บน Win 8 RTM เมื่อสองสามเดือนก่อนและพบข้อผิดพลาดนี้ ไม่แน่ใจว่าปัญหานี้มีอยู่ใน Windows 7 ด้วยหรือไม่ แต่อาจช่วยได้

ตัวเลือก:

1) การลบ //= require_tree ./ ละเว้นปัญหา -ตามที่ ColinR ระบุไว้ข้างต้นบรรทัดนี้ไม่ควรก่อให้เกิดปัญหาตั้งแต่แรก มีปัญหาเกิดขึ้นจริงกับ ExecJS ที่ทำงานอย่างถูกต้องกับรันไทม์ JavaScript ในระบบของคุณและการลบบรรทัดนี้เป็นเพียงการเพิกเฉยต่อข้อเท็จจริงนั้น

2) การติดตั้ง Node.js / การใช้งาน - หลายคนดูเหมือนจะจบลงด้วยการติดตั้ง Node.js และใช้สิ่งนั้นแทนรันไทม์ JavaScript ที่มีอยู่แล้วในระบบของตน แม้ว่าจะเป็นตัวเลือกที่ถูกต้อง แต่ก็ต้องใช้ซอฟต์แวร์เพิ่มเติมและหลีกเลี่ยงปัญหาเดิมเท่านั้นนั่นคือ ExecJS ทำงานไม่ถูกต้องกับรันไทม์ JavaScript ที่มีอยู่แล้วในระบบของคุณ หากรันไทม์ JavaScript ที่มีอยู่ในระบบของคุณควรจะใช้งานได้ทำไมไม่ทำให้มันทำงานแทนการติดตั้งซอฟต์แวร์เพิ่มเติม ตามที่ผู้สร้าง ExecJS รันไทม์ที่สร้างไว้แล้วใน Windows ได้รับการสนับสนุน ...

ExecJS ให้คุณรันโค้ด JavaScript จาก Ruby โดยอัตโนมัติจะเลือกรันไทม์ที่ดีที่สุดในการประเมินโปรแกรม JavaScript ของคุณจากนั้นส่งคืนผลลัพธ์ให้คุณเป็นอ็อบเจกต์ Ruby

ExecJS รองรับ runtimes เหล่านี้:

  • therubyracer - Google V8 ฝังอยู่ภายใน Ruby
  • therubyrhino - Mozilla Rhino ฝังอยู่ภายใน JRuby
  • โหนด js
  • Apple JavaScriptCore - มาพร้อมกับ Mac OS X
  • โฮสต์สคริปต์ Microsoft Windows (JScript)

(จาก github.com/sstephenson/execjs#execjs)

3) การแก้ไขปัญหาจริง / การเรียนรู้ -ใช้ความรู้เกี่ยวกับตัวเลือกที่ 1 และ 2 เพื่อค้นหาวิธีแก้ไขปัญหาอื่น ๆ ฉันไม่สามารถบอกคุณได้ว่าฉันปิดหน้าเว็บไปกี่หน้าเมื่อเห็นตัวเลือก 1 หรือ 2 เป็นวิธีแก้ปัญหาที่ได้รับการยอมรับก่อนที่จะค้นหาข้อมูลเกี่ยวกับปัญหาหลักที่เราพบ เหตุผลเดียวที่เรามองต่อไปก็คือเราไม่อยากเชื่อว่าทีม Rails จะ (1) แทรกบรรทัดโค้ดในทุกโครงการที่สร้างขึ้นในโครงร่างซึ่งทำให้เกิดปัญหาหรือ (2) ต้องการให้เราติดตั้งซอฟต์แวร์เพิ่มเติมเพื่อเรียกใช้ค่าเริ่มต้นนั้น บรรทัดของรหัส และในที่สุดเราก็มาถึงการแก้ไขปัญหารากของเรา (ไมล์ของคุณอาจแตกต่างกันไป)

การแก้ไขที่ได้ผลสำหรับเรา: ในระบบที่มีปัญหาให้ค้นหาไฟล์runtimes.rbของ ExecJS ดูเหมือนว่านี้ ทำสำเนาของไฟล์ที่พบเพื่อสำรองข้อมูล เปิด runtimes.rb ดั้งเดิมเพื่อแก้ไข JScript = ExternalRuntime.new(ค้นหาส่วนที่เริ่มต้นด้วยเส้น ในส่วนนั้นในบรรทัดที่มี:command => "cscript //E:jscript //Nologo //U",- ลบ//Uเท่านั้น จากนั้นในบรรทัดที่มี:encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE- เปลี่ยน UTF-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 ของคุณและรีเฟรชหน้าในเบราว์เซอร์ของคุณที่ทำให้เกิดข้อผิดพลาดเดิม หวังว่าตอนนี้หน้าจะโหลดโดยไม่มีข้อผิดพลาด นี่คือเธรดปัญหา ExecJS ที่เราโพสต์ผลลัพธ์ของเราครั้งแรก: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952

หากวิธีนี้ไม่สามารถแก้ไขปัญหาได้คุณสามารถเขียนทับ runtimes.rb ที่แก้ไขได้ตลอดเวลาด้วยสำเนาสำรองที่คุณ (หวังว่า) ทำไว้และทุกอย่างจะกลับมาเป็นสี่เหลี่ยมจัตุรัส ในกรณีนั้นให้พิจารณาตัวเลือกที่ 3 และค้นหาต่อไป แจ้งให้เราทราบว่าอะไรเหมาะกับคุณในที่สุด .. เว้นแต่จะลบ require_tree หรือติดตั้ง node.js มีหลายสิ่งที่เกิดขึ้นแล้ว :)


20
ฉันหวังว่าฉันจะให้คุณ +50 โหวต สิ่งนี้ทำให้ฉันรำคาญมานานเกินไปในการพยายามทำให้ therubyracer สำหรับ Windows โดยตระหนักว่าไม่รองรับจากนั้นพยายามให้ ExecJS โหลดอย่างถูกต้อง ขอขอบคุณที่สละเวลาเพื่อช่วยให้ฉันเรียนรู้และไม่ทำให้ปัญหาสับสน! สำหรับผู้ที่สงสัยคุณสามารถหาตำแหน่งของไฟล์ runtimes.rb ได้โดยพิมพ์ "gem which execjs"
Michael

4
ฉันต้องเรียกใช้การติดตั้งบันเดิลหลังจากทำการเปลี่ยนแปลงนี้เพื่อให้มันทำงานได้ ดังนั้นหากใครลองใช้วิธีแก้ปัญหานี้และดูเหมือนว่าจะไม่ได้ผลในตอนแรกอย่าลืมลอง! ฉันใช้ windows 8 64-bit และมันใช้ได้สำหรับฉัน! ขอบคุณ
Peter Kirby

2
+1 บันทึกความเร่งรีบจากการติดตั้งโหนด ตัวเลือก 3 ใช้งานได้สำหรับฉันใน windows 8 64 บิต
Sami

10
ความคิดเห็นเกี่ยวกับตัวเลือกที่ 3: github.com/sstephenson/execjs/issues/111กล่าวว่าเราสามารถแก้ปัญหาได้เพียงแค่เปลี่ยนUTF-16LEเป็นUTF-16โดยไม่ต้องลบ//Uตัวเลือก ฉันยืนยันมัน
Tsutomu

3
ฉันเห็นวิธีการมากมาย แต่ไม่มากว่าทำไม เหตุใดการเปลี่ยนสิ่งที่ดูเหมือนชุดอักขระจึงสร้างความแตกต่างเฉพาะบน windows? ฉันสงสัยคือทั้งหมด
NathanTempelman

14

มีปัญหาเดียวกัน OS- Windows 8 Error- 'ExecJS :: RuntimeError ... ' โซลูชัน - ไม่มี Node.js

  1. ติดตั้ง Node.js จากhttp://www.nodejs.org/download/
  2. รีสตาร์ทคอมพิวเตอร์

1
อันนี้ใช้ได้ผลสำหรับฉัน ไม่มีใครรู้ว่าทำไมการติดตั้ง node.js ถึงใช้งานได้?
mpalencia

12

ฉันมีปัญหานี้และกำลังเร่งอินเทอร์เน็ตฉันใช้ Windows 8 ด้วยไฟล์อัญมณีรางนี้

source 'https://rubygems.org'

gem 'rails', '3.2.9'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

group :development do gem 'sqlite3', '1.3.5' 
end

# Gems used only for assets and not required # in production environments by default. 

group :assets do 
    gem 'sass-rails', '3.2.5' 
    gem 'coffee-rails', '3.2.2'

gem 'uglifier', '1.2.3' 
end

gem 'jquery-rails', '2.0.2'

group :production do 
    gem 'pg', '0.12.2' 
end

ไปที่http://nodejs.org/download/ ติดตั้ง - รีสตาร์ทเครื่องและทุกอย่างทำงาน


ฉันติดตั้งโหนดตามที่แนะนำไม่จำเป็นต้องรีสตาร์ทเพียงแค่เปิดหน้าต่าง cmd ใหม่ (เดาว่านี่เป็นเพื่อให้สามารถเข้าถึงเส้นทางใหม่ได้)
จะ

5

ฉันชอบเส้นทางการเรียนรู้ ดูเหมือนว่าปัญหาเกิดจาก

IO.popen(command, options) { |f| output = f.read }

ส่งคืนสตริงว่างในexecjs\external_runtine.rb(บรรทัด 173 ในเวอร์ชัน 1.4.0) นี่คือสาเหตุที่ข้อความแสดงข้อผิดพลาดไม่มีข้อความ การเปลี่ยนแปลงที่แนะนำไม่ได้ผลสำหรับฉัน ฉันเปลี่ยนUTF-16LEเป็นUTF-8แต่มันยังส่งคืนสตริงว่างเปล่า ฉันลบออก\\Uจากcommand- ข้อความที่ส่งคืนอย่างน้อยนี้ แต่เป็นการเข้ารหัสที่ไม่ถูกต้อง - ในเบราว์เซอร์จะแสดงเป็นตัวอักษรจีน

ตามโพสต์บล็อก MSDN นี้โดยใช้//Uแฟล็กและเปลี่ยนเส้นทางไปยังไฟล์ทำให้cscriptส่งคืนผลลัพธ์โดยใช้UTF-16.

แล้วอย่างน่าอัศจรรย์ก็ทำงาน ( @ # $% ^ & @ $% !!!?!?!) โดยใช้commandเป็น"cscript //E:jscript //Nologo"และเป็นencoding "UTF-8"โอ้ดี.


4

ฉันต้องเพิ่มโฟลเดอร์ nodejs ในตัวแปรสภาพแวดล้อม Windows Path ของฉัน ใน Windows 8 ให้เปิด Control Panel ไปที่ System, Advanced system settings (ทางด้านซ้าย) คลิก Environment Variables ทางด้านซ้ายและแก้ไขตัวแปร Path เพื่อรวมไดเร็กทอรีไปยังโฟลเดอร์ nodejs ของคุณ (อาจอยู่ใน Program Files)

แน่นอนคุณต้องติดตั้ง Node.js (ใช้ตัวติดตั้ง Windows ) และติดตั้ง CoffeeScript ผ่าน NPM


4

ฉันรู้ว่านี่เป็นคำตอบที่ล่าช้ามากสำหรับปัญหานี้ แต่ฉันได้รับสิ่งที่คล้ายกันและลงไปตามเส้นทางทั้งหมดเพื่อทำความเข้าใจว่าอะไรเป็นสาเหตุของปัญหาจริงๆ

ปรากฎว่าเอ็นจิน jscript ของ windows เริ่มต้นยังคงอยู่ใน es3 และอัญมณีจำนวนมากกำลังใช้ประโยชน์จากคุณสมบัติ es5 หรือ es6 น่าเสียดายหากสิ่งนี้เกิดขึ้น (คุณกำลังใช้อัญมณีหรือโค้ดชิ้นหนึ่งที่ใช้ประโยชน์จากคุณสมบัติ es5 หรือ es6) ไม่มีทางที่จะปล่อยให้มันทำงานบน windows ด้วยเอ็นจิ้น js ดั้งเดิม

นี่คือเหตุผลว่าทำไมการติดตั้ง node.js จึงแก้ปัญหาได้ (โหนดอย่างน้อย es5)

หวังว่านี่จะช่วยบางคนที่กำลังดิ้นรนกับข้อผิดพลาดรันไทม์ของ jsexec

คำแนะนำ 2 เซ็นต์ของฉันคือการติดตั้งโหนด (ง่ายมาก) หรือติดตั้ง v8 และไม่ลบ // = require_tree

หมายเหตุ execjs จะใช้โหนดโดยอัตโนมัติหากตรวจพบ มิฉะนั้นให้บังคับใช้โดยเพิ่มในการบูตสิ่งที่ต้องการ:

ENV['EXECJS_RUNTIME'] = 'Node'

เพื่อตั้งค่า env เป็นโหนด


การติดตั้งโหนดเป็นความคิดที่ดี (และอาจง่ายที่สุด) แต่ก็ยังเกินความจำเป็นเล็กน้อยเมื่อพิจารณาจากขนาดของมัน
prusswan

4

สำหรับผู้ใช้ windows สิ่งนี้อาจได้ผล มีปัญหากับ coffee-script-source> 1.9.0 ที่ทำงานบน windows

ดูเหมือนว่าคุณต้องเพิ่มสิ่งนี้ลงใน gemfile ของคุณ:

อัญมณี 'coffee-script-source', '1.8.0'

แล้วทำ

Bundle update coffee-script-source

ฉันลองใช้ตัวเลือกข้างต้นทั้งหมดและผสมชุดค่าผสมบางอย่างเข้าด้วยกันจนกระทั่งฉันพบRails-4, ExecJS :: ProgramError ใน Pages # ยินดีต้อนรับและได้ทำการอัปเดตอัญมณีระบบหลายรายการรวมถึงการติดตั้งและอัปเดตกลุ่ม

ฉันเปลี่ยนกลับการทดลองทั้งหมดของฉันและลดระดับแหล่งที่มาของสคริปต์กาแฟและใช้งานได้ โพสต์ที่นี่เพื่อช่วยเหลือทุกคนที่อาจมีปัญหาคล้ายกัน

การอัปเดตไฟล์ในผู้ขาย / แคช

coffee-script-source-1.8.0.gem การลบไฟล์ .gem ที่ล้าสมัยจากผู้ขาย / แคช coffee-script-source-1.9.1.1.gem Bundle อัพเดตแล้ว!


ฉันลองตัวเลือก 3 ของคำตอบที่ยอมรับแล้วได้รับ "Argument Error" ลองติดตั้ง nodejs ไม่ได้ช่วยเพิ่ม nodejs ไปยังตัวแปรพา ธ (ฉันอยู่บน Win10) และในที่สุดก็ลองใช้แนวทางของคุณ ทำงานแล้ว! ขอบคุณ
elk

3

สำหรับผู้เริ่มต้นเช่นฉัน:

  1. ไปที่ \ app \ views \ layouts \ application.html.erb
  2. เปลี่ยนบรรทัดที่ 6 จาก:

    '<% = javascript_include_tag' application ',' data-turbolinks-track '=> true%>'

ถึง

<%= javascript_include_tag 'defaults', 'data-turbolinks-track' => true %>

ที่มาจากบทช่วยสอนเพื่อแก้ไขที่นี่


ของฉันใช้งานได้เมื่อฉันใส่ทั้งสองบรรทัด: <%= stylesheet_link_tag 'defaults', media: 'all', 'data-turbolinks-track': 'reload' %> <%= javascript_include_tag 'defaults', 'data-turbolinks-track': 'reload' %> ขอบคุณ Leandro P.
rld

1
กรุณาอย่าทำเช่นนี้ มันจะลบ Javascript ทั้งหมดในแอพ Rails ของคุณ ซึ่งจะซ่อนปัญหา แต่จะทำให้เกิดปัญหาอื่นในภายหลัง
mattangriffel

ใช่อย่างที่ @mattangriffel บอกอย่าทำแบบนี้
Neil Atkinson

2

รวดเร็วและสกปรกแก้ปัญหา: ลบจาก//= require_tree .application.js

ตามที่ฉันอธิบายในความคิดเห็นสำหรับคำถามนี้ไม่ได้ช่วยแก้ปัญหาพื้นฐานที่เป็นสาเหตุของข้อผิดพลาด แต่เป็นเพียงการหลีกเลี่ยงปัญหาเท่านั้น


สวัสดี Colin R ฉันต้องการความช่วยเหลือ จะเกิดอะไรขึ้นถ้าข้อผิดพลาดเกิดขึ้นที่บรรทัดที่ 5 โดยที่เพียงลบ <% = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true%> โค้ดบรรทัดนี้จะช่วยแก้ปัญหาได้ แต่ bootstrap ไม่ได้ใช้กับหน้าเว็บ แม้กระทั่งการลบ * = require_tree จาก application.css.sass ไม่ทำงาน ระบบของเพื่อนมี Windows 7 32 บิตไม่ได้ติดตั้ง nodejs แม้แต่วิธีที่ 3 ที่คุณแนะนำก็ไม่ได้ผล ฉันคิดว่าไม่มีปัญหากับ js ในกรณีของฉัน มีความคิดอย่างไรในการป้องกันข้อผิดพลาด?
ผู้เรียน

ฉันยังติดตั้ง Node.js และเส้นทางของ npm ถูกตั้งค่าในตัวแปรสภาพแวดล้อม ยังคงมีข้อผิดพลาดเดียวกัน ฉันกำลังพัฒนาแอปพลิเคชันใน Windows 8.1 64bit OS และมีการใช้อัญมณีชนิดเดียวกัน
ผู้เรียน

2

ฉันใช้วิธีแก้ปัญหาหมายเลข 2 เพราะก่อนหน้านี้ฉันมีข้อผิดพลาดนี้ แต่ในโอกาสนี้ไม่ได้ผลฉันจึงเพิ่มไฟล์

gem 'coffee-script-source', '1.8.0'

และเรียกใช้

bundle install

และปัญหาของฉันได้รับการแก้ไข


หากคุณใช้โซลูชันหมายเลข 2 คุณต้องโหลดบรรทัดคอมมานทั้งหมดใน windnows หลังจากติดตั้ง Node.js จากนั้นเปิดเซิร์ฟเวอร์และลองอีกครั้ง
Yuliem Alavez

1

นี่เป็นวิธีแก้ปัญหาที่ซับซ้อนน้อยกว่าสำหรับผู้เริ่มต้น:

หากคุณกำลังทำงานผ่านบทช่วยสอนคุณอาจกำลังทำงานกับ Gemfile เริ่มต้น (หรือเกือบมาก) คุณสามารถเปิดได้ในโปรแกรมแก้ไขข้อความของคุณและนำเครื่องหมายปอนด์ออกจากด้านหน้าของบรรทัดนี้:

# gem 'therubyracer', :platforms => :ruby

คุณจะต้องรีรันbundle installซึ่งอาจจะดาวน์โหลดบางสิ่งได้ แต่เมื่อเสร็จแล้วคุณจะสามารถเริ่มเซิร์ฟเวอร์ได้โดยไม่มีปัญหา

อย่างน้อยนั่นก็ใช้ได้ผลสำหรับฉัน

สิ่งนี้ยังใช้ได้กับ Ubuntu 12.04 อีกด้วย



0

คุณเปลี่ยนตำแหน่งของรหัสของคุณจาก C: \ Users \ this-user \ yo-appหรือเปล่า?

เมื่อฉันยังเด็กในรางฉันได้สร้างแอพขึ้นมาและตำแหน่งเริ่มต้นของแอพของฉันคือ C: \ Users \ Duncan \ my-appจากนั้นเมื่อฉันเปลี่ยนแอพของฉันและวางไว้ใน D: \ All-my-Apps - โฟลเดอร์ฉันมีข้อผิดพลาดนั้น ....

เกาหัวพยายาม 1,2,3 ขึ้นไป ..... ไม่มีอะไร! จนกระทั่งฉันส่งคืนรหัสทั้งหมดไปยังตำแหน่งโฟลเดอร์เริ่มต้นและด้วยความประหลาดใจของฉันฉันก็กลับมาอีกครั้ง :)

เผื่อว่าจะมีคนคิดว่าสิ่งนี้มีประโยชน์ (ฉันอธิบายไม่ได้ว่าทำไมถึงเกิดขึ้นบางทีอาจมีคนคาดเดาไม่ได้)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.