原先是打算寫一個 Chrome 插件,解決業(yè)務(wù)上數(shù)據(jù)抓取的一些自動化問題屁药,過程中由于實在懶得寫原生的 JavaScript 代碼奔浅,想著用 Vue 來寫湿滓,但是又想把界面寫得正常些,問題又被引向了如何使用基于 Vue 的 UI 框架台猴,最后覺得 BootstrapVue 不算太復(fù)雜朽合,找到一個教程,重新復(fù)習(xí)了一遍使用 Vue CLI 創(chuàng)建 Vue 項目的過程饱狂。
再最后覺得還是得回歸生成 Chrome 插件發(fā)布包曹步,所以需要 build 下項目看看效果,結(jié)果使用 IIS 打不開頁面休讳,在 Vue 的開發(fā)模式下讲婚,使用 CLI 是正常的,排查后發(fā)現(xiàn)是 Webpack 配置的問題俊柔,修改后解決筹麸。
問題:
頁面空白,打開 F12 開發(fā)者工具婆咸,發(fā)現(xiàn)是資源文件未加載成功
觀察調(diào)試工具的錯誤竹捉,應(yīng)該是資源文件的引用路徑有問題,而且生成的頁面路徑如果加上
'./'
就會正常尚骄,但是不可能自己手動替換块差,頁面多了那不是瘋了。
<!DOCTYPE html>
<html lang=en>
<head>
<meta charset=utf-8>
<meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name=viewport content="width=device-width,initial-scale=1">
<link rel=icon href=/favicon.ico>
<title>vue-chrome-ext</title>
<link href=/css/app.4eff3fa4.css rel=preload as=style>
<link href=/css/chunk-vendors.cbc2a074.css rel=preload as=style>
<link href=/js/app.c5da824c.js rel=preload as=script>
<link href=/js/chunk-vendors.a81ce785.js rel=preload as=script>
<link href=/css/chunk-vendors.cbc2a074.css rel=stylesheet>
<link href=/css/app.4eff3fa4.css rel=stylesheet>
</head>
<body><noscript><strong>We're sorry but vue-chrome-ext doesn't work properly without JavaScript enabled. Please enable
it to continue.</strong></noscript>
<div id=app></div>
<script src=/js/chunk-vendors.a81ce785.js></script>
<script src=/js/app.c5da824c.js></script>
</body>
</html>
另外由于 IIS 中設(shè)置的并非根目錄指向這個應(yīng)用,相當(dāng)于域名下有二級目錄憨闰,因此自然出錯了状蜗。
解決問題:
使用 Vue CLI 創(chuàng)建的項目下沒看到 Webpack 的配置文件(如:webpack.base.config.js、webpack.dev.config.js 鹉动、webpack.prod.config.js
等配置文件)轧坎,查詢后發(fā)現(xiàn),在 node_modules
目錄下 @vue
中的 cli-service
目錄下可以找到相關(guān)配置泽示。
不過等等缸血,先別忙著上去改配置,Vue 官方不建議這么干械筛。
調(diào)整 webpack 配置最簡單的方式就是在
vue.config.js
中的configureWebpack
選項提供一個對象:
// vue.config.js
module.exports = {
configureWebpack: {
plugins: [
new MyAwesomeWebpackPlugin()
]
}
}
該對象將會被 webpack-merge 合并入最終的 webpack 配置捎泻。
解決方式:
有了以上思路,解決就不是大問題了埋哟。
- 首先在項目根目錄下自己創(chuàng)建一個
vue.config.js
文件笆豁; - 修改為如下代碼:
module.exports = {
// 默認是"/"
publicPath: "./",
};
重新 build 一下,刷新瀏覽器赤赊,一切正常闯狱。