Rails ActionCable 编译报错

SpiderEvgn · January 10, 2020 · Last by ad583255925 replied at January 14, 2020 · 2766 hits

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

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

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

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

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

Reply to 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
Reply to SpiderEvgn

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

Reply to yfscret

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

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

Reply to yfscret

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

Reply to SpiderEvgn

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

打开 babel.config.js,找到

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

注掉

Reply to ad583255925

用了 react。。。

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

知道原因吗?

Reply to SpiderEvgn

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

SpiderEvgn closed this topic. 05 Mar 15:06
You need to Sign in before reply, if you don't have an account, please Sign up first.