Ton*_*bet 6 javascript assets nuxt.js vite nuxtjs3
我遇到了一个奇怪的情况,
我有一个Nuxt v3带有 vite 的“标准”项目
作品
<img src="~/assets/img/image.png">
<img src="~/assets/video/video.mp4">
Run Code Online (Sandbox Code Playgroud)
不起作用
<img :src="require('~/assets/img/image.png')">
<img :src="require('~/assets/video/video.mp4')">
Run Code Online (Sandbox Code Playgroud)
请注意,图像路径是相同的,因此它确实存在,我收到的错误是:
找不到模块“@/assets/img/image.png”需要堆栈
该文档没有提到实现它必须要做的任何事情
有什么我应该做的吗?
sad*_*adi 12
Vite中require不使用该功能;相反,您应该使用该import语句(Vite 是 Nuxt 3 的默认模块捆绑器)。
存在两个主要问题:
例如,以下内容将不起作用:
<img :src="`_nuxt/assets/img/${imageName}`">
Run Code Online (Sandbox Code Playgroud)
它在开发模式下工作,但在构建之后不起作用
我找到了这个方法:
export const useDynamicImage = (path: string): string =>
new URL(path, import.meta.url).toString();
Run Code Online (Sandbox Code Playgroud)
将其添加到您的堆肥中。您可以将路径传递给此函数并检索绝对路径。即使在构建之后,这种方法也能继续正常运行。
使用/src不@/
我发现这样:
export const useDynamicImage = (path: string): string =>
new URL(path, import.meta.url).toString();
Run Code Online (Sandbox Code Playgroud)
您可以将您的imageName(不要忘记扩展名)传递给此函数并检索绝对路径。
即使在构建之后,这种方法也能继续正常运行。
导入图像并像这样使用它们:
<script lang="ts" setup>
//@ts-ignore
import image1 from "../assets/images/image1.jpg";
//@ts-ignore
import image2 from "../assets/images/image2.jpg";
//@ts-ignore
import image3 from "../assets/images/image3.jpg";
const images = [image1, image2, image3];
</script>
Run Code Online (Sandbox Code Playgroud)
将您的图像放在公共目录中。
了解更多:Nuxt 文档 - 公共目录
public/ 目录内容按原样在服务器根目录中提供。
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |