Heroku生产环境Ember.js live reload超时、加载转圈问题如何修复
修复方案
问题根因
这是典型的生产环境误用Ember开发构建产物导致的问题:
- 本地开发时
ember serve默认开启live reload热更新,会自动在页面注入监听脚本,和本地运行的ember-cli服务建立长连接,本地服务存在所以功能正常,不会报错 - 生产环境不会运行ember-cli的开发服务,但你部署的页面里依然保留了live reload的请求脚本,这个请求会一直挂起直到超时,就会出现控制台报错、浏览器标签页加载指示器一直转圈的现象。
具体修复操作
- 构建生产环境Ember资源时必须指定生产环境参数,禁止直接把本地开发构建的
dist目录产物部署到线上:
生产模式构建会自动剔除live reload相关脚本、压缩静态资源,构建完成的页面不会再发起多余的live reload请求。ember build --environment=production - 如果你是用
ember-cli-railsgem整合Rails与Ember服务,检查两处配置:- 打开Ember配置文件
config/initializers/ember.rb,确认没有强制把Ember运行环境设为development - 打开Rails生产环境配置
config/environments/production.rb,检查是否存在覆写Ember构建环境的异常配置,保证生产环境下Ember默认以production模式构建
- 打开Ember配置文件
- 重新部署构建产物后,清空浏览器缓存再访问验证即可。
快速校验方法
部署前可以直接检查生成的index.html文件,全局搜索livereload关键字,如果能找到类似livereload.js的脚本引用,说明构建流程没有走生产模式,需要重新执行生产构建命令再部署。
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

