在VUE項目中的index.html中引入CSS等靜態文件,經常會遇到無法加載的問題,例如下圖:
問題分析及解決
- 引入的靜態文件在src文件夾內
index.html中不能引入src目錄下的文件,否則即使不報錯,樣式也會無效。因為src里的文件會用webpack打包!
通常將外部css文件放到static目錄下(哪怕將文件放入和index.html同級目錄也行)。
- 有單獨的靜態資源目錄但是名字不叫static
如果將文件放入static目錄下還是有這個問題,那么很有可能是就是有單獨的靜態資源目錄但是名字不叫static,這種的解決辦法更改配置文件,把對應的幾個配置文件內的static更改為你自己所創建的靜態資源目錄
需要更改的有3個文件,分別是config文件夾下的index.js,build文件夾下的webpack.dev.conf.js和webpack.prod.conf.js,假如你的靜態資源文件夾叫public,和src文件夾同級,需要修改的如下:
2.1 index.js
dev: {
assetsSubDirectory: 'public',//原本是static,現在改為public
assetsPublicPath: `/${name}/`,
...
build: {
index: path.resolve(__dirname, '../dist/index.html'),
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'public',//原本是static,現在改為public
2.2 webpack.dev.conf.js
// copy custom static assets
new CopyWebpackPlugin([
{
//下面原本是static,現在改為public
from: path.resolve(__dirname, '../public'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
2.3 webpack.prod.conf.js
// copy custom static assets
new CopyWebpackPlugin([
{
//下面原本是static,現在改為public
from: path.resolve(__dirname, '../public'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
關注Github:1/2極客
關注博客:御前提筆小書童
關注公眾號:開發者的花花世界