image src 使用 vuejs 获取 404 错误
image src get 404 error with vuejs
我是 vue.js 的新手,正在尝试使用 v-for
指令渲染图像列表。相反,我得到 the server responded with a status of 404 (Not Found)
。我正在使用 template generated by vue-cli.
webpack url-loader 应该将 item.src
对应的图像的 url 更改为某种 [name].[ext]?[hash]
格式,但它只是简单地保留它们(实际上是结果 url 是 http://localhost:8080/assets/computer.jpg
).
这是我的代码:
<template>
<h2 class="ui header">
<div class="content">
Recent Research
<div class="sub header">
recent research issue
</div>
</div>
</h2>
<div v-for="item in items" class="ui three column centered grid">
<div class="column">
<img class="ui centered medium image" :src="item.src" />
<h3 class="ui header">{{item.text}}</h3>
<p class="teal meta">{{item.extra}}</p>
</div>
</div>
</template>
<script>
export
default {
data() {
return {
items: [{
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
},
]
}
}
}
</script>
以及相关的webpack配置。
var path = require('path')
module.exports = {
entry: {
app: './src/main.js'
},
output: {
path: path.resolve(__dirname, '../dist/static'),
publicPath: '/static/',
filename: '[name].js'
},
resolve: {
extensions: ['', '.js', '.vue'],
alias: {
'src': path.resolve(__dirname, '../src')
}
},
resolveLoader: {
root: path.join(__dirname, 'node_modules'),
},
module: {
loaders: [{
test: /\.vue$/,
loader: 'vue'
}, {
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
}, {
test: /\.json$/,
loader: 'json'
}, {
test: /\.(png|jpg|gif|svg)$/,
loader: 'url',
query: {
limit: 10000,
name: '[name].[ext]?[hash]'
}
}]
},
vue: {
loaders: {
js: 'babel'
}
}
/*
eslint: {
formatter: require('eslint-friendly-formatter')
}
*/
}
您正在将一个字符串传递给项目数组的 'src' 字段,webpack 无法判断该字符串是否是资源。
我建议您尝试将其更改为:
items: [{
src: require('../assets/computer.jpg'),
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
....
这样输出可能会被 webpack 处理。
我是 vue.js 的新手,正在尝试使用 v-for
指令渲染图像列表。相反,我得到 the server responded with a status of 404 (Not Found)
。我正在使用 template generated by vue-cli.
webpack url-loader 应该将 item.src
对应的图像的 url 更改为某种 [name].[ext]?[hash]
格式,但它只是简单地保留它们(实际上是结果 url 是 http://localhost:8080/assets/computer.jpg
).
这是我的代码:
<template>
<h2 class="ui header">
<div class="content">
Recent Research
<div class="sub header">
recent research issue
</div>
</div>
</h2>
<div v-for="item in items" class="ui three column centered grid">
<div class="column">
<img class="ui centered medium image" :src="item.src" />
<h3 class="ui header">{{item.text}}</h3>
<p class="teal meta">{{item.extra}}</p>
</div>
</div>
</template>
<script>
export
default {
data() {
return {
items: [{
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
src: '../assets/computer.jpg',
text: 'fundamentals of search engine',
extra: 'with Google'
},
]
}
}
}
</script>
以及相关的webpack配置。
var path = require('path')
module.exports = {
entry: {
app: './src/main.js'
},
output: {
path: path.resolve(__dirname, '../dist/static'),
publicPath: '/static/',
filename: '[name].js'
},
resolve: {
extensions: ['', '.js', '.vue'],
alias: {
'src': path.resolve(__dirname, '../src')
}
},
resolveLoader: {
root: path.join(__dirname, 'node_modules'),
},
module: {
loaders: [{
test: /\.vue$/,
loader: 'vue'
}, {
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/
}, {
test: /\.json$/,
loader: 'json'
}, {
test: /\.(png|jpg|gif|svg)$/,
loader: 'url',
query: {
limit: 10000,
name: '[name].[ext]?[hash]'
}
}]
},
vue: {
loaders: {
js: 'babel'
}
}
/*
eslint: {
formatter: require('eslint-friendly-formatter')
}
*/
}
您正在将一个字符串传递给项目数组的 'src' 字段,webpack 无法判断该字符串是否是资源。
我建议您尝试将其更改为:
items: [{
src: require('../assets/computer.jpg'),
text: 'fundamentals of search engine',
extra: 'with Google'
}, {
....
这样输出可能会被 webpack 处理。