#Nuxt.js 动态绑定img
问题背景
在Nuxt.js项目中,有时候需要为image绑定指定src。
举个例子
image_src = "~/assets/img/image.png"
以下两种做法都会报错:
- 错误做法1
<img
:src="image_src"
width="70px"
height="80px"
/>
错误:
图片无法展示,路径错误。
- 错误做法2
<img
:src="require(`${image_src}`)"
width="70px"
height="80px"
/>
错误:
ERROR [Vue warn]: Error in render: "Error: Cannot find module '~/assets/img/image.png'"
解决方法
对比官方文档中的示例:
参考官方示例
<img :src="require(`~/assets/img/${image}.jpg`)" />
修改成
image_src="image.png"
<img
:src="require(`~/assets/${image_src}`)"
width="70px"
height="80px"
/>
问题就解决了。
原理解释
看起来这是因为nuxt.js中,路径~
是个特殊路径,需要在编译阶段进行解析,无法在客户端进行。