javascript - 尝试使用引导程序中的 javascript 文件时出现 404 Not found 错误
问题描述
我是 Rails 新手,我正在尝试使用 start bootstrap 建立一个网站,特别是在此处找到的登录页面。我已经将 css 和 html 导入到我的 rails 项目中,但是我很难使用 javascript。脚本文件在app/my_app/javascript/packs.
他们的样式中,我可以使用启动服务器app/assets/stylesheets
成功地引用其中包含的图像,它在我的浏览器中加载相关的样式和图像,尽管没有任何 javascript。控制台中的具体错误为<img src> assets/stylesheets/...</img src>.
rails s
localhost/:468 GET http://localhost:3000/packs/scripts.js 404(未找到)
我像这样引用 index.html.erb 页面底部的脚本
<script src> packs/scripts.js </script>
. 我也试过javascript/packs/scripts.js
我的 applications.html.erb 看起来像这样
<html>
<head>
<title>TestApp</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_link_tag 'styles', media: 'all', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= yield %>
</body>
</html>
该<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
标记仅出现一次,并且仅在该文件中出现。
我的 applications.js 文件是这个
//= require bootstrap.min
//= require jquery.easing.min
//= require jquery.fittext
//= require wow.min
//= require scripts
//= require jquery_ujs
//= require turbolinks
//= require_tree
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("packs/scripts")
所以rails/webpacker好像找不到javascript/...
路径下的脚本,也不知道为什么。我已经搜索并尝试了很多解决方案,但都无济于事。任何有关该问题的帮助或建议将不胜感激。谢谢
解决方案
如果你有一个来自 Webpacker 的 script.js 想要在 Rails 中加载,你可以使用<%= javascript_pack_tag 'scripts', 'data-turbolinks-track': 'reload' %>
.
javascript_pack_tag
是一个帮助方法,它会自动为你生成脚本标签和 url。
此外,由于您使用的是 turbolinks 并添加了'data-turbolinks-track': 'reload'
,因此您可以javascript_pack_tag
将<head>
.
推荐阅读
- java - Apache PDFBox 2 波斯语/阿拉伯语文本提取问题与某些字符(错误输出)
- shopify - 如何在shopify中捆绑产品?
- spring - Spring:如何使路由与页面上的 URL 保持同步?
- vue.js - Nuxt 路由解析页面而不是 api 路由
- postgresql - 使用 distinct + 过滤器时选择特定行的最快查询
- twitter-bootstrap - Bootstrap Carousel 子元素不会显示响应式边距或填充
- azure - 审核特定 Azure SQL Server 数据库用户
- javascript - 深入研究许多属性
- python - 多维列表的txt文件输出,不带逗号(,)
- validation - Google 表格 - 多个相关下拉列表