Rails - Không thể tìm thấy thời gian chạy JavaScript?


247

Tôi đã tạo một dự án Rails mới bằng cách sử dụng rails 3.1.0.rc4trên máy cục bộ của mình nhưng khi tôi cố gắng khởi động máy chủ thì tôi nhận được: Không thể tìm thấy thời gian chạy JavaScript. Xem ở đây để xem danh sách các thời gian chạy có sẵn. ( ExecJS::RuntimeUnavailable)

Lưu ý: Đây không phải là về Heroku.


Câu trả lời:


475

Cài đặt thư viện thời gian chạy javascript như nodejs giải quyết điều này

Để cài đặt nodejs trên Ubuntu, bạn có thể gõ lệnh sau trong terminal:

sudo apt-get install nodejs

Để cài đặt nodejs trên các hệ thống bằng yum, hãy nhập thông tin sau vào thiết bị đầu cuối:

yum -y install nodejs

14
cho tôi nữa. sudo apt-get install nodejs.
Hertzel Guinness

1
Bây giờ tôi đề nghị đây là tuyến đường để đi. Xem ở trên.
Michael Durrant

1
đã xóa ghi chú trong câu trả lời về việc cài đặt nút thông qua trung tâm phần mềm Ubuntu vì nó không có ở đó (Ubuntu 12.04)
Michael Durrant

1
Ubuntu 64 đang gây ra một rắc rối lớn khi cài đặt trị liệu, ngay cả phiên bản cuối cùng, 0.11.1, đã giải quyết điều đó. Câu trả lời này đã giúp tôi về điều đó.
Eduardo

@gwho Có câu trả lời dưới đây của Yang. Hãy nhìn vào đó.
theTuxRacer

44

Lưu ý từ Michael 12/11/2011 - Tôi đã thay đổi sự chấp nhận của tôi từ điều này (rubytheracer) thành ở trên (nodejs) vì nhà trị liệu có vấn đề về kích thước mã. Heroku bây giờ mạnh mẽ ngăn cản nó . Nó sẽ 'hoạt động' nhưng có thể có vấn đề về kích thước / hiệu suất.

Nếu bạn thêm thời gian chạy, chẳng hạn như Therubyracer vào Gemfile của bạn và chạy gói thì hãy thử và khởi động máy chủ, nó sẽ hoạt động.

gem 'therubyracer'

Một thời gian chạy javascript là cần thiết để biên dịch coffeescript và cũng cho uglifier.

Cập nhật, 12/12/2011: Một số người tìm thấy sự cố với rubytheracer (tôi nghĩ rằng đó chủ yếu là kích thước mã). Họ đã tìm thấy execjs (hoặc nodejs) hoạt động tốt (nếu không tốt hơn) và nhỏ hơn nhiều.

nb Coffeescript đã trở thành một tiêu chuẩn cho 3.1+


3
Nó cũng được sử dụng để nén JavaScript với UglifyJS. Lưu ý rằng cách thức được đề xuất để thực hiện các tác vụ này là thực hiện chúng trong quá trình phát triển rake assets:precompilevà sau đó thêm tài sản vào kho lưu trữ của bạn; Rails 3.1 sẽ không thực sự yêu cầu thời gian chạy JavaScript trong sản xuất tại thời điểm phát hành.
Whitequark

1
Tôi đã đánh dấu đây là câu trả lời. Đó là một chút lông vì điều này đã không khắc phục được ngay lập tức và tôi cũng đang thử các ứng dụng mới với 3.0.9 và 3.0.4 nhưng có lỗi (khác nhau) với chúng. Cuối cùng tôi đã làm một ứng dụng mới một lần nữa - và cũng có rails RC5 với nó và thêm rubytheracer và thực hiện cập nhật bunlde và cuối cùng tôi có thể khởi động máy chủ. Cảm ơn Công báo!
Michael Durrant

1
btw Ứng dụng rails tiêu chuẩn được tạo ra sử dụng uglifier cũng yêu cầu điều này tôi tin.
Michael Durrant

1
Tôi nghĩ rằng một thực tiễn tốt có thể được đưa nó vào gemfile thuộc nhóm phát triển, đại loại như group :development do gem 'therubyracer' end
eveevans

@eveevans lỗi thời gian chạy không thể tìm thấy. Tài sản được biên soạn trong môi trường sản xuất nên Therubyracer phải nằm trong khối env sản xuất.
lulalala

27

Thêm đá quý sau vào tệp đá quý của bạn

gem 'therubyracer'
gem 'execjs'

và chạy

bundle install

HOẶC LÀ

Cài đặt Node.js để sửa nó vĩnh viễn cho tất cả các dự án.


1
Điều này làm việc cho tôi (Linux Mint 16), tôi nghĩ rằng trong phiên bản mới nhất của đường ray hoặc bỏ lỡ một số phụ thuộc.
geminiCoder

15

sudo apt-get install nodejskhông làm việc cho tôi. Để làm cho nó hoạt động, tôi phải làm như sau:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Hy vọng điều này sẽ giúp ai đó có cùng vấn đề như tôi.


doenst làm việc cho tôi ppa add-apt-repository: chris-lea / node.js
jpganz18

@ jpganz18 hãy thử điều này trước: sudo apt-get install software-properties-common Nếu điều này không giải quyết được vấn đề, bạn có thể cài đặt thủ công: blog.anantshri.info/howto-add-ppa-in-debian
Robin

6

Trên nền tảng windows, tôi cũng gặp vấn đề đó. Giải pháp cho tôi chỉ là thêm

C:\Windows\System32

đến ĐƯỜNG

và khởi động lại máy tính.


3

Tôi gặp vấn đề này trên máy Windows và cài đặt node.js là giải pháp cuối cùng có hiệu quả với tôi. Điều này xuất hiện sau khi thử nhiều tuyến đường khác, bao gồm cả việc cố gắng làm cho 'trị liệu' hoạt động. Mặc dù github cho node.js cho thấy rằng cài đặt trên windows vẫn không ổn định, trang web tại http://nodejs.org/ có trình cài đặt Windows hoạt động hoàn hảo.



1

Nếu thất bại, bạn có thể thử

# aptitude cài đặt nodejs

làm gốc. Bạn có thể kiểm tra cài đặt của mình bằng lệnh sau:

# nút -v

Nếu bạn muốn cài đặt NPM, vui lòng tham khảo liên kết sau . Hy vọng nó giúp.


0

Trên CentOS 6.5, phần sau đây hoạt động với tôi:

sudo yum install -y nodejs

0

Cài đặt thời gian chạy Javascript

Lỗi xảy ra do không có thời gian chạy Javascript trên máy cục bộ của bạn. Để giải quyết vấn đề này, bạn sẽ cần cài đặt NodeJS.

Bạn có thể cài đặt NodeJS thông qua Trình quản lý phiên bản Node hoặc nvm :

Đầu tiên, cài đặt nvm:

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

Cài đặt Node thông qua nvm:

nvm install 5.9.1

Điều này sẽ cài đặt phiên bản 5.9.1của Node.


0

Tôi gặp vấn đề này khi sử dụng Phusion Pasbah (chạy dưới dạng mô-đun nginx) trên máy chủ Redhat. Chúng tôi đã cài đặt thời gian chạy Javascript. Các ứng dụng Rails khác trong cùng thư mục cha hoạt động tốt.

Hóa ra chúng tôi có vấn đề về quyền. Chạy "ls -l" và xem thư mục có cùng chủ sở hữu và nhóm với các ứng dụng hoạt động khác trên hệ thống không. Tôi đã phải chạy chown và chgrp trên thư mục (với công tắc đệ quy) để sửa nó.


0

Tôi hy vọng bạn đã cài đặt nodejs | | nmv.

Giải pháp của tôi không yêu cầu thiết lập gem hoặc cài đặt 'nút với sudo apt" khi bạn đã có nvm.

Tất cả những gì bạn cần là chỉnh sửa DesctopEntry của RubyMine. cho rằng chúng ta sẽ có những bước nhỏ:

  1. Đi đến usr/share/applications
  2. Mở trong bất kỳ trình soạn thảo nào (tôi sử dụng vim) Rubymine DesktopEntryvim RubyMine
  3. Chỉnh sửa dòng 6 (bắt đầu với Exec). Bạn shoud thêm để bắt đầu /bin/bash -i -c. Vì vậy, dòng của bạn sẽ trông như thế này Exec=/bin/bash -i -c "/home/USERNAME/rubymine/RubyMine-2019.1.2/bin/rubymine.sh" %f
  4. Làm xong! Bạn thật vinh quang!

Như một lợi ích, tất cả các biến môi trường của bạn hiện có sẵn cho RubyMine. Vì vậy, bạn cảm thấy không đau với việc thêm chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.