ActionCable 在本地开发环境跑没有任何问题,但是在生产上编译好发布后就出现如下报错:
生产用的是 Nginx + Docker 只做了最简单的代理用来测试,前端用 Rails 自带的 webpacker 打包,编译命令是:
docker-compose run --rm web rails assets:precompile
有人知道这是怎么回事吗?
生你看看你的 cable. yml 就知道了
cable.yml
development: adapter: async test: adapter: test production: adapter: redis url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> channel_prefix: app_production
所以你生产环境得配 redis 启动 redis 服务
配了,生产环境的有启动 redis 的 container,并且加了环境变量 REDIS_URL=redis://redis:6379/1
你那你那个报错截图 cable. js 里 是不是 可能手误?
完全没有头绪。同一套代码,开发环境是好的,编译后的就报错。页面一加载就看到 console 报错了,还没有触发广播的。也不知道是不是 js 编译的过程哪里有问题,但我用的都是 Rails 的默认组件。
你是不是用 typescript 和 react 了,前两天我碰到过
打开 babel.config.js,找到
// isProductionEnv && [ // require('babel-plugin-transform-react-remove-prop-types').default, // { // removeImport: true // } // ]
注掉
用了 react。。。
还真是,注释掉这一段就不报错了,多谢赐教!
知道原因吗?
对于这种直接报在内置组件里的错,就暂时别找原因了,等下个版本应该自己就好了。