gpt4 book ai didi

javascript - 如何将 npm 包的静态 Assets 发送到 nuxt 应用程序?

转载 作者:行者123 更新时间:2023-12-03 06:47:16 24 4
gpt4 key购买 nike

我正在尝试将 Assets 从 npm 包发送到 nuxt 应用程序。有没有人成功做到这一点?
我有一个 vue 组件作为具有结构的 npm 包:

-src/
-assets/
-noun-filter.svg
这个矢量图像被加载到这个 npm 包中的 vue 组件的模板中,如下所示:
<img class="filter-icon" :src="require('../assets/noun-filter.svg')"/>
在单独测试这个包时,上面的内容可以很好地使用。
但是,当我像这样在 nuxt 应用程序中导入 npm 包时:
<script>
export default {
name: "NuxtMainPage",
components: {
NpmImportedComponent: process.client
? () => import("@myname/mynpmpackage").then(m => m.Content)
: null
},
//...
}
</script>
当我运行应用程序时,我得到了 svg 的 404。
Nuxt 在 http://localhost:3000/_nuxt/img/noun-filter.b16c5666.svg 中查找文件它不存在的地方。
我在这里缺少什么吗?为什么nuxt会改变 Assets 的路径?为什么它不像我们期望的那样只查看节点模块?
如何通过 npm 包将静态 Assets 发送到 nuxt?
我试过的
  • 尝试在我的应用程序中使用 url-loader。网址仍然在 nuxt
  • 中被重定向
  • 使用 import @myname/mypackage/src/assets/noun-filter.svg 导入项目在 nuxt 应用程序中
  • ../assets 切换 npm 包中的相对 url至@assets
  • 将 assets 文件夹移动到 npm 包的根目录,并将其添加到 package.json
  • 中包含的文件中

    以上所有结果都与 nuxt 在以下位置查找图像的结果相同: http://localhost:3000/_nuxt/img/noun-filter.b16c5666.svg

    最佳答案

    我认为这里没有简单的解决方案。
    第一个解决方案,使用 url-loader将您的 Assets 文件内联为 base-64 数据 url。见 Asset URL Handling .vue.config.js

    ...
    chainWebpack: config => {
    config.module
    .rule('images')
    .use('url-loader')
    .loader('url-loader')
    .tap(options => Object.assign(options, { limit: 10240 })) // default is 4096
    }
    ...

    From Relative Path Imports


    第二种解决方案,将您的 Assets 文件复制到 static目录并改用绝对 url。
    Related post .

    关于javascript - 如何将 npm 包的静态 Assets 发送到 nuxt 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64149495/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com