ruby-on-rails - react /巴别塔 : Components not rendering only on CircleCI

标签 ruby-on-rails reactjs babeljs circleci redux

我最近将 ReactJS 与 React-Redux 和 Babelify(针对 ES6)添加到了 Rails 应用程序中。 Cucumber 测试在本地通过,但在 CircleCI 上未通过。以下是我目前所知道的:

  • 当我检查工件中的屏幕截图时,React 组件似乎没有渲染,即使等待了 4 秒才出现。
  • CircleCI 构建中没有错误
  • 我尝试过在不使用缓存的情况下在 CircleCI 上进行重建。
  • 基本的 javascript 相关测试正在通过。
  • 依赖 babel 和导入库 (lodash) 的基本测试正在通过

如何让 React 组件的 Cucumber 测试在 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

最佳答案

通过 SSH 连接到 CircleCI 测试后,我的同事发现 Object.assign 未定义。显然,CircleCI 使用的 Chrome 版本比我们测试时使用的版本要旧,并且 Babel 不会自动填充该 ES6 方法(请参阅评论以获取更多信息)。

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

关于ruby-on-rails - react /巴别塔 : Components not rendering only on CircleCI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33000160/

相关文章:

ruby-on-rails - Brew 更新中断 openssl

javascript - 无法在 firebase 函数中获取 setState

ajax - 如何在本地主机上使用 fetch 发出 CORS 请求?

javascript - Babel - 导出 es 模块时的不同转译结果

javascript - CSS 文件导致 react/webpack 配置出错

ruby-on-rails - 安装了pow.cx,http ://appname. dev无法打开

ruby-on-rails - Ruby on Rails 事件存储中的 Joint_PDF 解析错误

ruby-on-rails - 如何计算对象数量而不是获取 Ruby 中的所有对象?

javascript - 创建 hello world Reactjs 应用程序

javascript - 使用 babel-register 动态添加导出结果到 undefined