At the moment I'm just starting to learn Vue.js. I can't solve such a problem, when using "require()" an error appears: "Module not found: Error: Can't resolve". If I use static loading, then all images are loaded normally.
Static photo upload that works:
<template>
<img :src="'../img/' + message.filename" alt="img"/>
</template>
Dynamic photo upload that doesn't work:
<template>
<img :src="require('../img/' + message.filename)" alt="img"/>
</template>
Also tried:
"require('@/img/' + message.filename)" alt="img"/>
"require('@/assets/img/' + message.filename)" alt="img"/>
Folder structure:
/src
/assets
/img
image_1.jpg
image_2.jpg
/resources
/static
/components
App.vue
main.js
Webpack.config.js
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
mode: 'development',
devtool: 'source-map',
entry: path.join(__dirname, 'src', 'main', 'resources', 'static', 'js', 'main.js'),
devServer: {
contentBase: './static',
compress: true,
port: 8000,
allowedHosts: [
'localhost:8080'
],
stats: 'errors-only',
clientLogLevel: 'error',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
]
}
]
},
plugins: [
new VueLoaderPlugin()
],
resolve: {
modules: [
path.join(__dirname, 'src', 'main', 'resources', 'static', 'js'),
path.join(__dirname, 'node_modules'),
],
extensions: ['.js']
}
}