- bounty将在5天后过期**。回答此问题可获得+50声望奖励。BlueDogRanch希望引起更多人对此问题的关注:如何将jQuery加载到Mastoton?
我放弃了通过Webpacker How do I add jQuery to Mastodon 4.02 (using Rails 6 and Webpacker 4)?将jQuery添加到Mastodon 4.0.2的尝试
因此,现在我只想在Mastodon头文件application.html.haml
中添加一个指向jQuery CDN的链接。
我补充说= javascript_pack_tag "https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"
到application.html.haml
,然后运行
RAILS_ENV=production bundle exec rake tmp:cache:clear
RAILS_ENV=production bundle exec rails assets:generate_static_pages
RAILS_ENV=production bundle exec rails assets:precompile
然后从root帐户退出并运行systemctl restart mastodon-*
- 但Mastodon崩溃并显示应用程序的一般错误屏幕。*
- 编辑2/1/23**
使用%script src: "https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"
也会撞上乳齿象。
- 问题:**
- ·如何简单地将lnk添加到Mastodon头中的jQuery CDN?*
- ·我看到的错误是由重新编译Rails引起的吗?*
- ·哪里有错误日志可以显示更多崩溃信息?*
这是Github上的application.html.haml
:https://github.com/mastodon/mastodon/blob/a5a00d7f7adff5e0afbd23ac1e1b16120137509a/app/views/layouts/application.html.haml
!!! 5
%html{ lang: I18n.locale }
%head
%meta{ charset: 'utf-8' }/
%meta{ name: 'viewport', content: 'width=device-width, initial-scale=1' }/
- if cdn_host?
%link{ rel: 'dns-prefetch', href: cdn_host }/
%meta{ name: 'cdn-host', content: cdn_host }/
- if storage_host?
%link{ rel: 'dns-prefetch', href: storage_host }/
%link{ rel: 'icon', href: '/favicon.ico', type: 'image/x-icon' }/
- %w(16 32 48).each do |size|
%link{ rel: 'icon', sizes: "#{size}x#{size}", href: asset_pack_path("media/icons/favicon-#{size}x#{size}.png"), type: 'image/png' }/
- %w(57 60 72 76 114 120 144 152 167 180 1024).each do |size|
%link{ rel: 'apple-touch-icon', sizes: "#{size}x#{size}", href: asset_pack_path("media/icons/apple-touch-icon-#{size}x#{size}.png") }/
%link{ rel: 'mask-icon', href: asset_pack_path('media/images/logo-symbol-icon.svg'), color: '#6364FF' }/
%link{ rel: 'manifest', href: manifest_path(format: :json) }/
%meta{ name: 'theme-color', content: '#191b22' }/
%meta{ name: 'apple-mobile-web-app-capable', content: 'yes' }/
%title= content_for?(:page_title) ? safe_join([yield(:page_title).chomp.html_safe, title], ' - ') : title
= stylesheet_pack_tag 'common', media: 'all', crossorigin: 'anonymous'
= stylesheet_pack_tag current_theme, media: 'all', crossorigin: 'anonymous'
= javascript_pack_tag 'common', crossorigin: 'anonymous'
= javascript_pack_tag "locale_#{I18n.locale}", crossorigin: 'anonymous'
= csrf_meta_tags
%meta{ name: 'style-nonce', content: request.content_security_policy_nonce }
= stylesheet_link_tag '/inert.css', skip_pipeline: true, media: 'all', id: 'inert-style'
= stylesheet_link_tag custom_css_path, skip_pipeline: true, host: root_url, media: 'all'
= yield :header_tags
%body{ class: body_classes }
= content_for?(:content) ? yield(:content) : yield
.logo-resources{ 'tabindex' => '-1', 'inert' => true, 'aria-hidden' => true }
= render_symbol :icon
= render_symbol :wordmark
1条答案
按热度按时间tjjdgumg1#
设法让mastodon在开发模式下以vagrant运行,但在生产中应该是一样的,你只需要预编译和重新启动。
网络包
将其添加到插件:
这意味着在模块中会自动包含
$
和jQuery
。application.js中的console.log($);
会显示以下内容:如果需要,您可以尝试将 * jquery * 添加到窗口:
现在,模块外有了
$
和jQuery
:我认为,它会在生产中失败,因为CSP策略,所以没有内联脚本。
内容分发网络
网络选项卡显示它不工作的原因:
内容安全策略配置为不接受来自外部主机的脚本,并且仅为样式设置 * nonce *:
你正在寻找
script_src
配置,它在那里的几个地方,我认为更新这一节应该足够了:主页是
explore
,如果你点击它在网络选项卡,你可以看到响应标题:链轮
将 * jquery * 下载到
vendor/assets/javascripts/jquery.js
并添加它以进行预编译:现在,您无需再对CSP进行干预: