I am referencing an image url in a vue component like
<img alt="Vue logo" src="~statics/reports/logo.png">
this works
but while trying
<img alt="Vue logo" :src="getURL()">
data() {
return { imgPath: "~statics/reports/logo.png" };
},
methods: {
getURL() {
//
// console.log(path)
return (this.imgPath)
}
},
it fails
My folder structure is
In the first case the path is resolved to
http://localhost:8081/img/logo.82b9c7a5.png
and served automatically by the dev server
The path is not resolved in the second case
it remains http://localhost:8081/~statics/reports/logo.png
I am using vue cli 3 generated default config for webpack .
I do not want to use relative paths for all images like ../images/ as it makes it more verbose. I have tried require(pathVariable) that too does not work Please help with resolving the img path when the url is dynamic ie asset name comes from server and i append a path in a method or computed and use :src dynamicbinding to serve it
The second way fails because "~" try to get this asset from node_modules. You can read more about handling assets here: https://cli.vuejs.org/guide/html-and-static-assets.html#relative-path-imports.
To fix it just use require like below:
data() {
return {
imgPath: require('@/statics/logo.png')
}
}
..or directly in template:
<img alt="Vue logo" :src="require('@/statics/logo.png')">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With