Nuxt 不会在 Firefox 中将内联 SVG 作为 Vue 组件加载,我该怎么办?

Posted

技术标签:

【中文标题】Nuxt 不会在 Firefox 中将内联 SVG 作为 Vue 组件加载,我该怎么办?【英文标题】:Nuxt won't load an inlined SVG as Vue component in Firefox, what should I do? 【发布时间】:2021-07-21 07:05:50 【问题描述】:

SVG 是作为组件从源代码复制粘贴到 .vue 文件中的,它可以在 Chrome 中运行,但在 Firefox 中会引发此错误,并且整个图标不会呈现。由于每个都抛出相同的错误,我将只选择一个来代表问题。请看一下。

[Vue warn]: Failed to resolve async component: function IconInstagram() 
    return __webpack_require__.e(/*! import() | components/icon-instagram */ "components/icon-instagram").then(__webpack_require__.bind(null, /*! ../../components/Icon/Instagram.vue */ "./components/Icon/Instagram.vue")).then(function (c) 
      return Object(_utils__WEBPACK_IMPORTED_MODULE_8__["wrapFunctional"])(c.default || c);
    );
  
Reason: ChunkLoadError: Loading chunk components/icon-instagram failed.
(error: http://localhost:3000/_nuxt/components/icon-instagram.js)
<template>
  <!-- IconInstagram.vue -->
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
    <g fill="currentColor">
      <path
        d="M20.947 8.305a6.53 6.53 0 0 0-.419-2.216 4.61 4.61 0 0 0-2.633-2.633 6.606 6.606 0 0 0-2.186-.42c-.962-.043-1.267-.055-3.709-.055s-2.755 0-3.71.055a6.606 6.606 0 0 0-2.185.42 4.607 4.607 0 0 0-2.633 2.633 6.554 6.554 0 0 0-.419 2.185c-.043.963-.056 1.268-.056 3.71s0 2.754.056 3.71c.015.748.156 1.486.419 2.187a4.61 4.61 0 0 0 2.634 2.632 6.584 6.584 0 0 0 2.185.45c.963.043 1.268.056 3.71.056s2.755 0 3.71-.056a6.59 6.59 0 0 0 2.186-.419 4.615 4.615 0 0 0 2.633-2.633c.263-.7.404-1.438.419-2.187.043-.962.056-1.267.056-3.71-.002-2.442-.002-2.752-.058-3.709zm-8.953 8.297c-2.554 0-4.623-2.069-4.623-4.623s2.069-4.623 4.623-4.623a4.623 4.623 0 0 1 0 9.246zm4.807-8.339c-.597 0-1.078-.482-1.078-1.078a1.077 1.077 0 1 1 2.155 0c0 .596-.482 1.078-1.077 1.078z"
      ></path>
      <circle cx="11.994" cy="11.979" r="3.003"></circle>
    </g>
  </svg>
</template>

安装的浏览器和 Nuxt.js 都在最新的稳定频道上。我应该怎么做才能解决这个问题?

【问题讨论】:

你能展示一下组件是如何加载和使用的吗?您可以链接到复制品(例如,在 GitHub 中)吗? 你去吧,我还在主 README 文件上放了一条消息,请看@tony19 ... github.com/pratamatama/nuxt-inline-svg-bug 我无法重现该问题。见Firefox 86.0.1 screenshot @tony19 看起来这个问题只发生在 Windows (Firefox 88.0) 上,我使用完全相同的存储库得到了错误,现在它还说无效的 DOM 节点...imgur.com/a/1rjoS6V跨度> 【参考方案1】:

原来是一个广告拦截器试图阻止对脚本的访问。禁用它可以修复错误并且它不再出现。

This question solves the problem。详细解释请看这里。

【讨论】:

以上是关于Nuxt 不会在 Firefox 中将内联 SVG 作为 Vue 组件加载,我该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

外部样式表中带有 fill:url(#id) 样式的 Firefox SVG,内联样式很好

SVG 内联 CSS 未在 Internet Explorer 中显示

SVG的HTML5内联

使用内联svg时,chrome中不显示单个图标

H5 内联 SVG

为啥我的 SVG 在 Chrome 而不是 Firefox 中正确显示?