资产 "application.js" 不在资产管道中
The asset "application.js" is not present in the asset pipeline
我是 Ruby 和 ROR 框架的新手。我尝试使用 JQuery 创建网络应用程序。我的步骤是:
- 添加了 gem 'jquery-rails' 并从命令行执行了 bundle install 命令
- 字符串
//= require jquery2
添加到 application.js 文件
- 现在我尝试将文件包含到页面中。我在
<%= javascript_include_tag "application" %>
部分添加到 application.html.erb file
当我尝试在浏览器中查看页面时,我看到错误信息:
Sprockets::Rails::Helper::AssetNotFound in LandingPage#index
The asset "application.js" is not present in the asset pipeline.
<%= javascript_include_tag "application" %>
我做错了什么?我用谷歌搜索了这个错误,但没有找到任何好的解释。
首先尝试重启你的服务器,一般不需要在assets中包含application.js
文件。如果它不起作用,那么
在您的 config / initializer / assets.rb
文件中添加以下内容:
Rails.application.config.assets.precompile += %w(application.js)
注意:添加资产文件后,不要忘记重新启动服务器。如果您对 Inilalizers 进行了任何更改,则必须重新启动服务器才能看到效果。
我也在这个错误中 运行 使用 application.html.erb 文件中的语法 javascript_include_tag Rails 6(使用 webpack)。
With rails 6 和 webpack 使用:
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
上面接受的解决方案解决了大多数问题,但如果像我一样,在按照每条说明和每条解决方案进行操作后,问题仍然存在。以下内容可能对您有所帮助。
在经历了一系列错误之后,我找到了以下作品。
根据我的经验,这与 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 再次编译如上。
如果你在此之后有任何问题,你也可以尝试在你的配置/初始值设定项/assets.rb 文件中添加以下内容:
Rails.application.config.assets.precompile += %w(application.js)
如果您 运行 遇到部署到 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 生产问题。
我是 Ruby 和 ROR 框架的新手。我尝试使用 JQuery 创建网络应用程序。我的步骤是:
- 添加了 gem 'jquery-rails' 并从命令行执行了 bundle install 命令
- 字符串
//= require jquery2
添加到 application.js 文件 - 现在我尝试将文件包含到页面中。我在
<%= javascript_include_tag "application" %>
部分添加到 application.html.erb file
当我尝试在浏览器中查看页面时,我看到错误信息:
Sprockets::Rails::Helper::AssetNotFound in LandingPage#index
The asset "application.js" is not present in the asset pipeline.
<%= javascript_include_tag "application" %>
我做错了什么?我用谷歌搜索了这个错误,但没有找到任何好的解释。
首先尝试重启你的服务器,一般不需要在assets中包含application.js
文件。如果它不起作用,那么
在您的 config / initializer / assets.rb
文件中添加以下内容:
Rails.application.config.assets.precompile += %w(application.js)
注意:添加资产文件后,不要忘记重新启动服务器。如果您对 Inilalizers 进行了任何更改,则必须重新启动服务器才能看到效果。
我也在这个错误中 运行 使用 application.html.erb 文件中的语法 javascript_include_tag Rails 6(使用 webpack)。
With rails 6 和 webpack 使用:
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
上面接受的解决方案解决了大多数问题,但如果像我一样,在按照每条说明和每条解决方案进行操作后,问题仍然存在。以下内容可能对您有所帮助。
在经历了一系列错误之后,我找到了以下作品。
根据我的经验,这与 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 再次编译如上。
如果你在此之后有任何问题,你也可以尝试在你的配置/初始值设定项/assets.rb 文件中添加以下内容:
Rails.application.config.assets.precompile += %w(application.js)
如果您 运行 遇到部署到 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 生产问题。