UTF-16LE错误不完整“\ n”

时间:2014-09-14 06:07:50

标签: ruby-on-rails angularjs utf-16le

我一直在尝试跟踪几个有关rails的教程,每次我在运行rails s时遇到以下问题时:

Started GET "/" for 127.0.0.1 at 2014-09-14 06:57:44 +0100
Connecting to database specified by database.yml
Processing by CarsController#index as HTML
  Car Load (1.0ms)  SELECT "cars".* FROM "cars"
  Rendered cars/index.html.erb within layouts/application (396.0ms)
Completed 500 Internal Server Error in 101655ms

ActionView::Template::Error (incomplete "\n" on UTF-16LE
  (in /cygdrive/c/rails/todolist/3/rails-angular-example-master/app/assets/javascripts/angular_app.js.coffee.erb)):
    3: <head>
    4:   <title>Angular</title>
    5:   <%= stylesheet_link_tag    "application", :media => "all" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
    9: <body>
  app/views/layouts/application.html.erb:6:in `_app_views_layouts_application_html_erb__988651031__1054838708'
  app/controllers/cars_controller.rb:6:in `index'
  config/initializers/quiet_assets.rb:8:in `call_with_quiet_assets'

教程:https://github.com/wulftone/rails-angular-example

1 个答案:

答案 0 :(得分:2)

当ExecJS尝试处理您的资产(javascript和coffeescript)并且您的文件编码而不是 UTF-16LE时,就会发生这种情况。

最受欢迎的修复:使用替代的ExecJS运行时

最流行的解决方案可能是将NodeJS用作ExecJS运行时。一种方法:

  1. 安装nodejs
  2. 设置环境可变EXECJS_RUNTIMENode
  3. 启动Rails服务器
  4. 替代修复:修改现有配置

    另一种安装(NodeJS)的替代方法是修改默认ExecJS运行时的配置。我相信您的系统正在使用cscript

    查看您的execjs runtimes.rb文件。 (它位于你的gems目录中。)你可以在github here上看到这个文件的最新版本。它包含以下内容:

    JScript = ExternalRuntime.new(
      name:        "JScript",
      command:     "cscript //E:jscript //Nologo //U",
      runner_path: ExecJS.root + "/support/jscript_runner.js",
      encoding:    'UTF-16LE' # CScript with //U returns UTF-16LE
    )
    

    我无法就最佳方法向您提供建议,但为了快速获得修复,您可能只想编辑此文件(然后重新启动服务器)。

    • 您可能会发现删除//U可以解决问题。
    • 您可能会发现将UTF-16LE更改为UTF-8可以解决问题。
    • 您可能会发现这两个步骤的组合可以解决问题。

    这些说明来自ExecJS::RuntimeError on Windows trying to follow rubytutorial