Mon ami a essayé un Rails de tutoriel sur Win 8 RTM il y a quelques mois et a couru dans cette erreur. Vous ne savez pas si ce problème existe dans Windows 7, mais cela peut aider.
Options:
1) l'élimination //= require_tree .
/ Ignorer le problème - Cette ligne ne devrait pas être à l'origine d'un problème en premier lieu. Il y a un réel problème avec ExecJS fonctionne correctement avec le runtime JavaScript dans votre système et les supprimer cette ligne est juste ignorer ce fait.
2) l'Installation de Node.js de Course ou de loin - Beaucoup de gens semblent juste la fin de l'installation Node.js et en l'utilisant à la place de la runtime JavaScript déjà sur leur système. Alors que c'est une option valable, il faut aussi un logiciel supplémentaire et qu'elle évite le problème d'origine, qui est que ExecJS ne fonctionne pas correctement avec le runtime JavaScript déjà sur votre système. Si le code JavaScript d'exécution sur votre système est censé fonctionner, pourquoi ne pas faire le travail au lieu d'installer un autre logiciel? Selon le ExecJS créateur, le moteur d'exécution déjà intégré dans Windows est en fait pris en charge...
ExecJS vous permet d'exécuter du code JavaScript à partir de Ruby. Il choisit automatiquement la meilleure exécution disponibles pour évaluer le JavaScript de votre programme, puis renvoie le résultat à vous comme un Rubis objet.
ExecJS prend en charge ces temps de fonctionnement:
- therubyracer - Google V8 intégré au sein de Ruby
- therubyrhino - Mozilla Rhino intégré au sein de JRuby
- Node.js
- Apple JavaScriptCore - Inclus avec Mac OS X
- Microsoft Windows Script Host (JScript)
(à partir de github.com/sstephenson/execjs#execjs )
3) en Fait pour résoudre le problème / l'Apprentissage de l'Utilisation des connaissances des options 1 et 2 pour rechercher d'autres solutions. Je ne peux pas vous dire combien de pages j'ai fermé en voyant les options 1 ou 2 a été la solution retenue avant de trouver de l'information sur le problème de base que nous avions. La seule raison pour laquelle nous avons gardé la recherche était que nous ne pouvions en croire les Rails, l'équipe de (1) insérer une ligne de code dans chaque échafaudage généré projet qui a causé un problème, ou (2) nous demandent d'installer de logiciel supplémentaire juste pour exécuter cette ligne de code par défaut. Et donc, nous nous sommes finalement arrivés à un correctif pour résoudre notre problème de base (vos miles peut varier).
Le Correctif qui a fonctionné pour nous:
Sur le système d'avoir des problèmes, trouver des ExecJS du temps de fonctionnement.rb fichier. Il ressemble à ceci. Faites une copie du fichier de sauvegarde. Ouvrez le fichier original runtimes.rb pour l'édition. Trouver la section qui commence avec la ligne, JScript = ExternalRuntime.new(
. Dans cette section, sur la ligne contenant :command => "cscript //E:jscript //Nologo //U",
- suppression de l' //U
seulement. Puis sur la ligne contenant :encoding => 'UTF-16LE' # CScript with //U returns UTF-16LE
- changement UTF-16LE d' UTF-8
. Enregistrer les modifications dans le fichier. Cette section du fichier doit indiquer:
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
)
Ensuite, arrêtez puis redémarrez votre serveur Rails et actualisez la page dans votre navigateur qui a produit l'erreur d'origine. J'espère que la page se charge sans erreur maintenant. Voici la ExecJS problème de thread où nous avons posté nos résultats: https://github.com/sstephenson/execjs/issues/81#issuecomment-9892952
Si cela ne corrige pas le problème, vous pouvez toujours remplacer la modification de temps de fonctionnement.rb avec la copie de sauvegarde que vous (je l'espère) fait et tout sera revenu à la case départ. Dans ce cas, envisager l'option 3 et continuer à chercher. Laissez-nous savoir ce qui fonctionne pour vous.. sauf si c'est de retirer le require_tree ou de l'installation node.js, il ya beaucoup de qui va autour déjà. :)