You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails报错:资产管道中不存在application.js资产

解决Rails中"The asset 'application.js' is not present in the asset pipeline"报错

问题核心

你用--javascript=webpack创建的Rails项目,默认会用Webpacker管理JavaScript资产,但布局文件里仍使用了传统Asset Pipeline的javascript_include_tag,两者不匹配导致文件找不到;另外也可能是Webpacker未正确安装或入口文件缺失。

具体解决步骤

  • 替换布局中的资产标签
    Webpacker的JS入口文件在app/javascript/packs/application.js,需要把布局里的标签换成Webpacker对应指令:

    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_pack_tag "application", "data-turbo-track": "reload", defer: true %>
    

    如果你通过npm安装Bulma并想用Webpacker管理样式,也可以把样式标签换成stylesheet_pack_tag "application"。

  • 补全Webpacker安装配置
    之前你遇到过webpack文件夹缺失的问题,重新执行安装命令补全依赖和配置文件:

    bundle exec rails webpacker:install
    

    执行后检查app/javascript/packs/application.js是否存在,这是Webpacker编译JS的核心入口文件。

  • 启动Webpack开发服务器
    开发环境下需要同时运行Rails服务器和Webpack编译服务:

    1. 单独启动Webpack dev server:
      ./bin/webpack-dev-server
      
    2. 或者启动Rails时自动附带Webpack服务(部分Rails版本支持):
      rails s -b webpack-dev-server
      

    生产环境部署前需要预编译资产:

    bundle exec rails webpacker:compile
    
  • 换回传统Asset Pipeline(可选)
    如果不想用Webpacker,想转回Asset Pipeline管理JS:

    1. 确保app/assets/javascripts/application.js存在,且文件内包含Sprockets指令(比如//= require_tree .)
    2. 在config/initializers/assets.rb中添加:
      Rails.application.config.assets.precompile += %w( application.js )
      
    3. 清理旧缓存:
      rails assets:clean
      rails tmp:clear
      

内容的提问来源于stack exchange,提问作者Nguyen Cuc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:50:45