Rails ActionCable 编译报错

SpiderEvgn · 2020年01月10日 · 最后由 ad583255925 回复于 2020年01月14日 · 2766 次阅读

ActionCable 在本地开发环境跑没有任何问题,但是在生产上编译好发布后就出现如下报错:

生产用的是 Nginx + Docker 只做了最简单的代理用来测试,前端用 Rails 自带的 webpacker 打包,编译命令是:

docker-compose run --rm web rails assets:precompile

有人知道这是怎么回事吗?

生你看看你的 cable. yml 就知道了

yfscret 回复

cable.yml

development:
  adapter: async

test:
  adapter: test

production:
  adapter: redis
  url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
  channel_prefix: app_production
SpiderEvgn 回复

所以你生产环境得配 redis 启动 redis 服务

yfscret 回复

配了,生产环境的有启动 redis 的 container,并且加了环境变量 REDIS_URL=redis://redis:6379/1

你那你那个报错截图 cable. js 里 是不是 可能手误?

yfscret 回复

完全没有头绪。同一套代码,开发环境是好的,编译后的就报错。页面一加载就看到 console 报错了,还没有触发广播的。也不知道是不是 js 编译的过程哪里有问题,但我用的都是 Rails 的默认组件。

SpiderEvgn 回复

你是不是用 typescript 和 react 了,前两天我碰到过

打开 babel.config.js,找到

// isProductionEnv && [
     //   require('babel-plugin-transform-react-remove-prop-types').default,
     //   {
     //     removeImport: true
     //   }
     // ]

注掉

ad583255925 回复

用了 react。。。

还真是,注释掉这一段就不报错了,多谢赐教!

知道原因吗?

SpiderEvgn 回复

对于这种直接报在内置组件里的错,就暂时别找原因了,等下个版本应该自己就好了。

SpiderEvgn 关闭了讨论。 03月05日 15:06
需要 登录 后方可回复, 如果你还没有账号请 注册新账号