vue打包静态资源路径不正确的解决办法

vue项目完成打包上线的时候很多人都会碰到静态资源找不到的问题,常见的有两个 1、js,css路径不对 解决办法:打开config/index.js,将其中的assetsPublicPath值改为’./’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

build: {
// 服务器端配置
env: require('./prod.env'),
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../views'),// 公共资源地址
assetsSubDirectory: './' + project_config.static_root + '/',// 子文件夹前缀 // 在webpack2中编译需要加上后缀/ ,否则会报操作错误Error
assetsPublicPath: '', // 静态地址前缀,使用网址以便对外发布
productionSourceMap: false,// 是否生成map文件(设成ture会额外生成一份map文件方便前端调试,但是由于vue.js编译后的代码就算加了map也看不懂,所以直接使用false即可)
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.
// Before setting to `true`, make sure to:
// npm install --save-dev compression-webpack-plugin
productionGzip: false,
productionGzipExtensions: ['js', 'css'],
// Run the build command with an extra argument to
// View the bundle analyzer report after build finishes:
// `npm run build --report`
// Set to `true` or `false` to always turn it on or off
bundleAnalyzerReport: process.env.npm_config_report
}

2、css中引用的图片资源找不到 index.vue文件中有一段css,其中引用了一个背景图片,是这样写的

1
2

.box {background-image: url("../img/login_bg.jpg");}

“./views/img/”文件夹下有这张图片,打包后路径发生变化这个图片就找不到了,stackflow上有一个解决办法,很简单 打开“build/utils.js”,增加一行代码即可 “publicPath:”../“”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

exports.cssLoaders = function (options) {
options = options {}
var cssLoader = {
loader: 'css-loader',
options: {
minimize: process.env.NODE_ENV === 'production',
sourceMap: options.sourceMap
}
}
// generate loader string to be used with extract text plugin
function generateLoaders(loader, loaderOptions) {
var loaders = [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}
// Extract CSS when that option is specified
// (which is the case during production build)
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
fallback: 'vue-style-loader',
publicPath:"../"
})
} else {
return ['vue-style-loader'].concat(loaders)
}
}

// https://vue-loader.vuejs.org/en/configurations/extract-css.html
return {
css: generateLoaders(),
postcss: generateLoaders(),
less: generateLoaders('less'),
sass: generateLoaders('sass', {indentedSyntax: true}),
scss: generateLoaders('sass'),
stylus: generateLoaders('stylus'),
styl: generateLoaders('stylus')
}
}

vue打包静态资源路径不正确的解决办法
http://example.com/2018-01-19 vue打包静态资源路径不正确的解决办法/
作者
csorz
发布于
2018年1月19日
许可协议