Rails 5 不要在生产中使用 ES6 代码预编译 JS 文件
Rails 5 don't precompile JS files with ES6 code in production
我正在部署一个包含 ES6 代码的 javascript 应用程序。
当我做 运行 bundle exec rake assets:precompile RAILS_ENV=production
时,我得到:
ExecJS::RuntimeError: SyntaxError: Unexpected token: punc ())
这是因为prueba.js有以下几点:
var greetings = () => {
let saludo = 'tio';
console.log('saludo' + saludo)
};
greetings();
而且 Uglify 不识别 ES6。为了解决这个问题,我安装并设置了 gems:
gem 'sprockets-es6', '~> 0.9.2'
gem 'babel-transpiler', '~> 0.7.0'
但是没有用,
在application.rb中,我有:
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
require 'sprockets/es6'
注意:如果我 运行 rake assets:precompile
没有 RAILS_ENV=production,我不会得到错误
使用ES6时,如果使用uglifier (3.2.0)
你可以更改文件 production.rb
with config.assets.js_compressor = Uglifier.new(和谐:真)
接受的答案到目前为止有效,但在几天前进行捆绑更新后,新版本 execjs 2.8 发布后,使用 ES6 和丑化器压缩停止工作。
错误:JSON::ParserError:439:'{"code":"/*! 处的意外标记...
要使其再次运行,只需将 execjs 的版本修复为 2.7
我正在部署一个包含 ES6 代码的 javascript 应用程序。
当我做 运行 bundle exec rake assets:precompile RAILS_ENV=production
时,我得到:
ExecJS::RuntimeError: SyntaxError: Unexpected token: punc ())
这是因为prueba.js有以下几点:
var greetings = () => {
let saludo = 'tio';
console.log('saludo' + saludo)
};
greetings();
而且 Uglify 不识别 ES6。为了解决这个问题,我安装并设置了 gems:
gem 'sprockets-es6', '~> 0.9.2'
gem 'babel-transpiler', '~> 0.7.0'
但是没有用,
在application.rb中,我有:
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
require 'sprockets/es6'
注意:如果我 运行 rake assets:precompile
没有 RAILS_ENV=production,我不会得到错误
使用ES6时,如果使用uglifier (3.2.0) 你可以更改文件 production.rb
with config.assets.js_compressor = Uglifier.new(和谐:真)
接受的答案到目前为止有效,但在几天前进行捆绑更新后,新版本 execjs 2.8 发布后,使用 ES6 和丑化器压缩停止工作。
错误:JSON::ParserError:439:'{"code":"/*! 处的意外标记...
要使其再次运行,只需将 execjs 的版本修复为 2.7