Webpacker编译成功但Docker容器内找不到输出资产文件如何解决?
问题原因
- 核心原因是
webpacker-dev-server底层依赖的webpack-dev-server,在开发模式下默认将所有编译产物存放在内存中,不会持久化写入磁盘。你看到的编译成功日志是内存中的产物列表,并未实际落盘,自然无法通过文件检索命令找到。 - 这种设计是为了提升开发环境的热更新速度,内存读写效率远高于磁盘读写,同时避免频繁修改代码产生大量磁盘写入操作。
解决方法
如果你需要将编译产物写入磁盘,只需要在config/webpacker.yml的development.dev_server配置节点下添加write_to_disk: true即可:
development: <<: *default compile: true dev_server: # 保留你原有的所有配置项 write_to_disk: true
修改后重启webpacker-dev-server,编译产物就会正常写入你配置的public/packs路径下。
如果你不需要实际落盘,只是要访问编译后的资源,直接通过dev server的服务地址访问即可:你配置的dev server端口是3035,资源访问路径格式为http://localhost:3035/packs/[编译后的文件名],可以直接读取到内存中的资源。
补充说明
生产环境不要使用webpacker-dev-server,执行rails webpacker:compile命令会自动将编译产物写入public/packs目录供生产环境使用。
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

