ExecJS और एक जावास्क्रिप्ट रनटाइम नहीं मिल सका


403

मैं Mongoid / डेविस रेल 3.1 टेम्पलेट ( Mongoid और डेविस ) का उपयोग करने की कोशिश कर रहा हूं , और मुझे एक त्रुटि मिल रही है जिसमें कहा गया है कि ExecJS एक जावास्क्रिप्ट रनटाइम नहीं पा सकता है। जब मेरा कोई इंस्टॉलेशन नहीं हुआ, तो काफी अच्छा था, लेकिन मैंने Node.js , मस्टैंग और रूबी रेसर को स्थापित करने की कोशिश की है , लेकिन कुछ भी काम नहीं कर रहा है।

मुझे एक जावास्क्रिप्ट रनटाइम नहीं मिला। उपलब्ध रनटाइम्स () की सूची के लिए sstephenson / ExecJS (GitHub) देखें ExecJS::RuntimeUnavailable

मुझे यह काम करने के लिए क्या करने की आवश्यकता है?


4
btw - मैं ubuntu कर्म का उपयोग कर रहा हूँ।
श्रीब्रोवर्ट

आपको वास्तव में जवाब बदलने पर विचार करना चाहिए। Node.js का उत्तर लगभग उतना ही अच्छा नहीं है जितना कि एग्जॉस्ट / रूबिरैसर।
सीन डनफोर्ड

3
माणिक्य के पास इसके साथ अन्य मुद्दे हैं। अगर आप इससे बच सकते हैं तो हर्कोक अब आपके जेमफाइल में इसे शामिल करने की सिफारिश नहीं करता है। devcenter.heroku.com/articles/rails-asset-pipeline#therubyracer मुझे लगता है कि उबंटू पर एक उचित जावास्क्रिप्ट रनटाइम स्थापित करना इस प्रश्न का सही उत्तर है।
एम। स्कॉट फोर्ड

जवाबों:


436

उबंटू उपयोगकर्ता

मैं Ubuntu 11.04 पर हूं और इसी तरह के मुद्दे थे। Node.js को स्थापित करने ने इसे ठीक कर दिया है।

उबंटू 13.04 x64 के अनुसार आपको केवल चलाने की आवश्यकता है:

sudo apt-get install nodejs

इससे समस्या का समाधान हो जाएगा।


CentOS / RedHat उपयोगकर्ता

sudo yum install nodejs

1
इसे आजमाया। कोई भाग्य नहीं। मुझे आश्चर्य है कि यह एक आरवीएम संघर्ष या कुछ और है। अन्य सभी लोगों ने सुझाव दिया है कि मेरे लिए काम नहीं किया है।
श्रीब्रोवर्ट

76
मणि 'अमल' मणि 'उपचारात्मक' यह एक से बेहतर समाधान है।
ड्वेनमेक

26
हेरोकू अब मेमोरी के उपयोग के कारण चिकित्सीय रूप से दृढ़ता से हतोत्साहित कर रहा है । मैंने इस उत्तर के अनुसार अपनी देव मशीन पर नोडज स्थापित किया और थेरैब्रायसर को अपने मणिफाइल से बाहर निकाल लिया। यह भी देखें stackoverflow.com/questions/7092107/...
मार्क बेरी

11
@dwaynemac मैं असहमत हूं। मैं नहीं बल्कि रनटाइम एक OS लाइब्रेरी (डिफ़ॉल्ट रूप से मैक और विंडोज के साथ) के रूप में मौजूद है, बजाय निर्भरता सूची में एक और मणि जोड़ने के बजाय।
विलियम डेनिस

1
ऐसा लगता है कि जब तक कि वहाँ कुछ और नहीं है जब तक कि मुझे याद किया गया था कि कुछ और हर्कोबोज़ तैनाती के साथ समस्याएँ पैदा कर रहा है। यह पसंदीदा उपाय है।
स्टॉर्मम

445

बस जोड़ दो अपने रत्न फ़ाइल में ExecJS और रूबी रेसर और bundle installबाद में चलाएं ।

gem 'execjs'

gem 'therubyracer'

सब कुछ ठीक होना चाहिए।


6
यह मेरे लिए काम करता है, रेलगाड़ी 3.1rc4 और Ubuntu 11.04 (रेल के साथ मेरी पहली कोशिश 3.1)। मैं एक पाड़ उत्पन्न करने की कोशिश कर रहा था जब मुझे त्रुटि मिली। अभी भी सुंदर लंगड़ा है कि 3.1 रेल बॉक्स से बाहर "टूटी हुई" है।
अद्भुत

35
रेल 3.1 आरसी 6 के लिए, आपको बस निर्दिष्ट करने की आवश्यकता हैgem 'therubyracer'
9

5
जब नया एप्लिकेशन बनाया जाता है तो क्या इन रत्नों को डिफ़ॉल्ट जेमफाइल में शामिल किया जाता है?
रिचर्ड फॉसेट

2
यह एक बेहतर समाधान है। यदि आप किसी दूरस्थ सर्वर पर तैनाती कर रहे हैं या अन्य डेवलपर्स के साथ ऐप साझा कर रहे हैं, तो सभी को नोड स्थापित करना है। बस बंडल बंडल स्थापित करने की तुलना में बहुत अधिक दर्द है, जो वे वैसे भी कर रहे होंगे।
jdkealy

19
हेरोकू अब मेमोरी के उपयोग के कारण चिकित्सीय रूप से दृढ़ता से हतोत्साहित कर रहा है । मैंने अपने देव मशीन ( github.com/joyent/node/wiki/… ) पर नोडज स्थापित किए और अपने रत्न से बाहर थैरेबीसर ले लिया। यह भी देखें stackoverflow.com/questions/7092107/...
मार्क बेरी

77

अपने जेम फाइल में, लिखें

gem 'execjs'
gem 'therubyracer'

और फिर चला

bundle install

मेरे लिए सब कुछ ठीक है :)


9
आप execjs 'जोड़ने की जरूरत नहीं है
miguelSantirso

हां उर में सही 3.2.1 आप केवल gem'therubyracer का उपयोग करना होगा '
मनीष नौटियाल

धन्यवाद @ मनीष नौटियाल और @ पीटर मोर्टेंसन। यह मेरे लिए काम करता है
रवींद्र

48

मुझे एक समान समस्या थी: मेरी रेल 3.1 ऐप ने विंडोज पर ठीक काम किया लेकिन लिनक्स पर चलने के दौरान ओपी के समान त्रुटि मिली। दोनों प्लेटफ़ॉर्म पर मेरे लिए काम करने वाला फिक्स निम्नलिखित को मेरे साथ जोड़ना था Gemfile:

gem 'therubyracer', :platforms => :ruby

चाल जान रही है कि :platforms => :rubyवास्तव में इसका मतलब है केवल "सी रूबी (एमआरआई) या रुबिनियस के साथ इस रत्न का उपयोग करना है, लेकिन विंडोज नहीं है।"

मैन पेज:platforms में अन्य संभावित मूल्यों का वर्णन किया गया हैbundler

FYI करें: विंडोज में एक अंतर्निहित जावास्क्रिप्ट इंजन है जो execjsपता लगा सकता है। लिनक्स पर, एक अंतर्निहित नहीं है, हालांकि कई उपलब्ध हैं जो एक स्थापित कर सकते हैं। therubyracerउनमें से एक है। दूसरों को execjs README.md में सूचीबद्ध किया गया है ।


धन्यवाद, इसने मेरे लिए उबंटू वनरिक पर रूबी स्थापना का उपयोग कर 1.9.3 और रेल 3.2.1
यशिमा

महोदय आपका बहुत बहुत धन्यवाद!
DaTroop

मैं नोड के साथ एक CentOS सर्वर पर त्रुटि में चला गया। यह मुझे अतीत में मिला। धन्यवाद!
नागर्रो

36

मेरे जेमफाइल में निम्नलिखित रत्न जोड़ने से समस्या हल हो गई:

gem 'therubyracer'

फिर अपनी नई निर्भरताओं को बांधें:

$ bundle install

Gemfile में मणि 'एग्जॉस्ट' भी जोड़ते हैं
बिजेंद्र

6
निष्पादनों को पहले से ही रेल द्वारा शामिल किया गया है। यह केवल जारी उम्मीदवारों के दौरान भी आवश्यक था।
JDutil

16

एक वैकल्पिक तरीका सिर्फ रत्न समूह के बिना बंडल करना है जिसमें आपके पास चीजें नहीं हैं।

ऐसा:

bundle install --without assets

आपको जेमफाइल को बिल्कुल भी संशोधित करने की आवश्यकता नहीं है, बेशक आप एसेट चेन सामान नहीं कर रहे हैं - जो आमतौर पर गैर-विकास वातावरण में लागू होता है। बंडल को .bundle / config फ़ाइल में आपकी '--woutout' सेटिंग याद रहेगी।


सबसे बढ़िया उत्तर। रेल संस्करण 3.2.3 के लिए काम किया
फ्रांट्ज़ी रोमैन

1
यह बहुत अच्छा है, और इस तरह के एक साधारण तय है। हेरोकू साइट कहती है कि रूबाइज़र को अब सेडर की आवश्यकता नहीं है (इसलिए देवदार के ढेर के साथ) इसलिए मुझे इस बात पर आश्चर्य हुआ कि अचानक मेरा कार्यक्रम स्थानीय स्तर पर क्यों शुरू हुआ। यह चाल चली।
माइक बेलीथ

6

अपनी रत्न फ़ाइल में निम्नलिखित रत्न जोड़ें

gem 'therubyracer'
gem 'execjs'

और भाग खड़ा हुआ

bundle install

आप कर चुके हैं :)


6

Amazon linux (AMI) के लिए:

sudo yum install nodejs npm --enablerepo=epel

1
धन्यवाद, यह उच्च स्तर पर होना चाहिए
डेविड मौरिसियो

यह AWS मानक लाइनक्स डिस्ट्रो पर काम करने के लिए कैपिस्ट्रानो की तैनाती के लिए आवश्यक था।
jjk

4

मैं इसे ठीक करने के लिए जेम फ़ाइल में रूबी रेसर जोड़ देता था। लेकिन हे, Node.js काम करता है!


आप रत्नजटित नोड्स को कैसे जोड़ते हैं? मुझे एक नोडज रत्न नहीं मिला।
पापौचे गुइलिनज़िन्हो

4

मेरे पास यह त्रुटि थी लेकिन केवल मेरे मंचन सर्वर पर ही मेरा उत्पादन वातावरण नहीं था। नोडज पहले से ही दोनों वातावरणों में स्थापित किया गया था।

टाइप करके:

which node

मुझे पता चला कि नोड कमांड उत्पादन में स्थित था: / usr / बिन / नोड पर लेकिन: / usr / स्थानीय / बिन / नोड मचान में।

मंचन पर एक सिमलिंक बनाने के बाद यानी:

sudo ln -s /usr/local/bin/node /usr/bin/node

आवेदन तो मंचन में काम किया।

कोई उपद्रव कोई अव्यवस्था नहीं।


आकर्षण की तरह काम करता है! एक सलाह: मुझे इसके लिए सिमलिंक बनाने की nodejsभी जरूरत है
राफेल गोम्स फ्रांसिस्को

3

रूबीरज़र का उपयोग न करें क्योंकि यह मेमोरी पर खराब है। यहाँ कुछ लोगों द्वारा सुझाए गए Node.js को स्थापित करना एक बेहतर विचार है।

उपलब्ध रनटाइम्स की यह सूची जो ExecJs लाइब्रेरी द्वारा उपयोग की जा सकती है, Node.js के उपयोग का भी दस्तावेज है

https://github.com/sstephenson/execjs

तो, Node.js एक overkill नहीं है, और RubyRacer का उपयोग करने से बेहतर समाधान है।



0

मुझे यह समस्या तब शुरू हुई जब मैंने रूबी के साथ रूबी 1.9.3 का उपयोग करना शुरू किया, जहां मेरी प्रणाली रूबी 1.8.7 है। मणि दोनों स्थानों पर स्थापित है, लेकिन किसी कारण के लिए रेल स्क्रिप्ट ने इसे नहीं उठाया। लेकिन जेम्फाइल के लिए "एग्जॉस्ट" और "थेरैबायरेसर" को जोड़कर चाल चली।


0

अपनी मणि फ़ाइल में इस लाइन को अनलॉक करें।

19 # मणि 'थेरैबरैसर', प्लेटफॉर्म:: माणिक

और बंडल इंस्टाल चलाएं

आप काम करने के लिए तैयार हैं। :)


0

RubyMine में Ubuntu 18.04, Ruby 2.6। *, रेल्स 5, और RubyMine 2019.1.1 का उपयोग करके डिबग करने का प्रयास किया जा रहा है। , मैं उसी मुद्दे पर भाग गया।

समस्या को हल करने के लिए, मैंने mini_racerअपने से लाइन को अनलॉक्ड किया Gemfileऔर फिर भाग गया bundle:

# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'mini_racer', platforms: :ruby

में बदलो:

# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby

0

मैंने एनवीएम केnode माध्यम से स्थापित किया और कैपिस्ट्रानो के साथ तैनाती करते समय इस मुद्दे का सामना किया। कैपिस्ट्रानो ने एनवीएम को स्वचालित रूप से लोड नहीं किया क्योंकि यह गैर-अंतःक्रियात्मक रूप से चलता है।

ठीक करने के लिए, बस उन पंक्तियों को स्थानांतरित करें जो एनवीएम आपके ~/.bashrcऊपर तक जोड़ता है । फ़ाइल कुछ इस तरह दिखाई देगी:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.