资产“application.js”不存在于资产管道中

问题描述 投票:0回答:5

我是 RubyROR 框架的新手。我尝试使用 JQuery 创建网络应用程序。我的步骤是:

  1. 添加了 gem 'jquery-rails' 并从命令行执行了 bundle install 命令
  2. String
    //= require jquery2
    添加到 application.js 文件
  3. 现在我尝试将文件包含到页面中。我将部分字符串
    <%= javascript_include_tag "application" %>
    添加到 application.html.erb 文件

当我尝试在浏览器中查看页面时,我看到错误消息:

Sprockets::Rails::Helper::AssetNotFound in LandingPage#index
The asset "application.js" is not present in the asset pipeline.
<%= javascript_include_tag "application" %>

我做错了什么?我用谷歌搜索了这个错误,但没有找到任何好的解释。

ruby-on-rails ruby asset-pipeline
5个回答
15
投票

我也在 Rails 6(带有 webpack)中使用 application.html.erb 文件中的语法 javascript_include_tag 运行了这个错误。

与rails 6和webpack一起使用:

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

13
投票

首先尝试重启服务器,一般情况下assets中不需要包含

application.js
文件。如果不起作用那么

在您的

config/initializer/assets.rb
文件中添加以下内容:

Rails.application.config.assets.precompile += %w(application.js)

注意:添加资产文件后,不要忘记重新启动服务器。如果您对 Inilalizers 进行任何更改,则必须重新启动服务器才能看到效果。


11
投票

如果您在部署到 Heroku 的 Rails 应用程序中遇到此问题,则可能需要指定文件名。

这适用于以前是 Rails 6 应用程序的应用程序,但当我升级到 Rails 7 时,

application.erb
不再识别我的
application.js
文件。

我改变了这个:

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

对此:

    <%= javascript_include_tag "/assets/application.js", "data-turbo-track": "reload", defer: true %>

这解决了我的 Heroku 生产问题。


5
投票

上面接受的解决方案解决了大多数人的问题,但如果像我一样,您在遵循每条说明和每一个解决方案后仍然遇到问题。下面的内容也许对你有帮助。

在经历了一系列错误之后,我发现了以下作品。

根据我的经验,这与 webpacker 和 nvm 安装有关。要尝试该解决方案,请首先恢复您为调试问题所做的任何其他操作。您需要确保正在运行最新的 webpacker 版本。

然后我会跑:

    rails webpacker:compile 

在您的终端中。

如果编译时没有出现节点警告,那么一切都很好。如果它向您发出有关节点版本的警告,或者无法编译,请安装最新的 LTS 节点版本。我的是16.13.1。对于Ubuntu。 。这个很重要。 Node 的最新版本不一定是最新的 lts 版本。您需要安装在您的主目录中。运行:

    nvm install --lts
    nvm use --lts

您可能想将其设置为默认值,例如。 :

    nvm alias default 16.13.1

还要确保您的应用程序布局具有:

    <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

完成后,按上述方式再次运行 webpacker 编译。

如果您在此之后遇到任何问题,您还可以尝试在 config/initializer/assets.rb 文件中添加以下内容:

    Rails.application.config.assets.precompile += %w(application.js)

0
投票

这可能对一些人有帮助。我正在使用 7.1.1 的新 Rails 安装,这就是我的项目的构建方式:

rails new . --javascript=bun --css=tailwind --skip-test --skip-jbuilder --database=postgresql --asset-pipeline=propshaft

我的解决方案很简单。我刚刚进入应用程序/资产,看到没有

javascript
文件,我创建了它和一个空的
application.js

app
  assets
    javascript
      javascript.js

我不太确定这是如何发生的,因为它不是在项目构建期间创建的,但事实就是如此。

© www.soinside.com 2019 - 2024. All rights reserved.