Ruby on rails React/Babel:组件不能仅在CircleCI上渲染

Ruby on rails React/Babel:组件不能仅在CircleCI上渲染,ruby-on-rails,reactjs,babeljs,circleci,redux,Ruby On Rails,Reactjs,Babeljs,Circleci,Redux,我最近向Rails应用程序添加了带有React Redux和Babelify(用于ES6)的ReactJS。黄瓜测试在当地通过,但没有通过CircleCI。以下是我目前所知道的: 当我检查工件中的屏幕截图时,显示React组件没有渲染,即使在等待它们出现的时间长达4秒 CircleCI构建中没有错误 我试着在没有缓存的情况下重建CircleCI 基本的javascript依赖测试正在通过 依赖babel和导入库(lodash)的基本测试正在通过 如何让我的反应成分黄瓜测试通过CircleCI

我最近向Rails应用程序添加了带有React Redux和Babelify(用于ES6)的ReactJS。黄瓜测试在当地通过,但没有通过CircleCI。以下是我目前所知道的:

  • 当我检查工件中的屏幕截图时,显示React组件没有渲染,即使在等待它们出现的时间长达4秒
  • CircleCI构建中没有错误
  • 我试着在没有缓存的情况下重建CircleCI
  • 基本的javascript依赖测试正在通过
  • 依赖babel和导入库(lodash)的基本测试正在通过
如何让我的反应成分黄瓜测试通过CircleCI

# no circle.yml

# gemfile
gem 'capybara-webkit'
gem "chromedriver-helper"
gem 'capybara-screenshot'
gem 'selenium-webdriver'

# package.json
"dependencies": {
  "browserify": "~> 10.2.4",
  "browserify-incremental": "^3.0.1",
  "lodash": "^3.10.1",
  "react": "~>0.13.3",
  "react-redux": "~>3.1.0",
  "redux-thunk": "~>1.0.0",
  "babelify": "~>6.3.0"
}

# support/env.rb
Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.javascript_driver = :chrome

进入CircleCI测试后,我的同事看到
Object.assign
未定义。显然,CircleCI使用的Chrome版本比我们在测试中使用的版本要旧,而Babel并没有自动填充ES6方法(更多信息请参见注释)


他用lodash的
.extend()
替换了
Object.assign()
,测试到处都是绿色的。

Babel本身不进行多边形填充,但是如果您正在加载Babel的默认多边形填充(
require(
require('babelify/polyfill');
),那么
Object.assign
应该是多边形填充的。