5 votes

ExecJS::RuntimeError lors de l'exécution du blog Getting Started with Rails sur cygwin (windows7)

J'essaie d'exécuter le blog Getting Started with Rails sur cygwin (windows7). J'obtiens le message d'erreur suivant :

ExecJS: : RuntimeError dans Welcome#index

module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\tmp\execjs20130903-50672-1vn7gqc.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3

  (in /usr/lib/ruby/gems/1.9.1/gems/turbolinks-1.3.0/lib/assets/javascripts   /turbolinks.js.coffee)

est installé.

Ceci après que

$rails generate controller welcome index
$rails s

J'utilise Rails 4.0 sous Cygwin. Une idée de la raison pour laquelle cela peut se produire ?

Remerciements

umbregachoong

2voto

Yumecosmos Points 794

J'ai rencontré cette erreur et elle était liée au fait que le chemin d'accès au fichier temporaire était erroné. J'ai pu résoudre le problème en modifiant les deux fichiers suivants dans \gems\[ruby version]\gems\execjs-2.0.2\lib\execjs . (Possiblement trouvé dans \usr\lib\ruby\ mais cela dépend de la façon dont Ruby est installé. J'utilise RVM, donc la mienne est différente).

external_runtime.rb

compile_to_tempfile(source) do |file|
     extract_result(@runtime.send(:exec_runtime, file.path))
  end
end

doit être remplacé par

compile_to_tempfile(source) do |file|
    filepath = file.path
    if ExecJS.cygwin? && @runtime.name == "JScript"
      IO.popen("cygpath -m " + file.path) { |f| filepath = f.read }
      filepath = filepath.gsub("\n","")
    end
    extract_result(@runtime.send(:exec_runtime, filepath))
  end
end

module.rb

Ajoutez ceci juste avant les deux derniers end s.

def cygwin?
  @cygwin ||= RbConfig::CONFIG["host_os"] =~ /cygwin/
end

Après cela, redémarrez votre serveur Rails et avec un peu de chance, cela devrait fonctionner.

Source : https://github.com/sstephenson/execjs/issues/78

0voto

Arihant Jain Points 1

Ne faites rien, allez simplement dans application/assets/javascript/application.js et supprimez

'//'

de

//=nécessite des turbolinks

à

\=exiger des turbolinks

qui décommentera la ligne du fichier Cette étape m'a permis de faire mon travail lorsque j'ai rencontré une erreur similaire dans le serveur rails par défaut en suivant le tutoriel RAILS. J'utilise un PC Windows 10 et cela a résolu mon cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X