【发布时间】:2020-11-03 06:08:11
【问题描述】:
我正在尝试将资产从 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会改变资产的路径?为什么它不像我们期望的那样只查看节点模块?
如何通过 npm 包将静态资源发送到 nuxt?
我尝试过的
- 尝试在我的应用程序中使用 url-loader。网址仍然在 nuxt 中被重定向
- 在 nuxt 应用中使用
import @myname/mypackage/src/assets/noun-filter.svg导入项目 - 将npm包中的相对url从
../assets切换到@assets - 将 assets 文件夹移动到 npm 包的根目录,并将其添加到 package.json 中包含的文件中
上述所有结果都与 nuxt 在以下位置查找图像的结果相同:
http://localhost:3000/_nuxt/img/noun-filter.b16c5666.svg
【问题讨论】:
标签: javascript vue.js nuxt.js npm-package